解析需要花费一些时间,因此我希望能够显示进度条。但是我似乎找不到找到更新进度的方法。
问题来自这样的事实,即似乎没有一种方法(至少据我所知)来检测pullparser.next()
将运行多少次。我尝试在最初加载数据时添加并计算换行符,但也无法给出正确的结果。
int eventType = pullparser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
//Do stuff
}
eventType = pullparser.next();
//Update progress by x%
}
最佳答案
我目前已经设计了一种解决方法,如果有人偶然发现此线程,请放置在此处。只要将换行符保留在原始XML字符串中:如果您检查eventype是文本并且是空白,并且仅增加计数器,那么就可以计算出进度。
private int incrementPullParser(int eventType, XmlPullParser xpp) throws XmlPullParserException, IOException {
if (eventType == XmlPullParser.TEXT && xpp.isWhitespace()){
//used for counting the progress
currentLines++;
publishProgress((double)(currentLines/maxLines)*100);
return xpp.next();
}
return eventType;
}