※ ChatGPTを利用し、要約された質問です(原文:androidアプリ開発 xmlパーサについて)
Androidアプリ開発のxmlパーサについて知りたい
このQ&Aのポイント
Androidアプリ開発でxmlパーサの使い方について教えてください
xmlパーサを使って特定の行数だけ読み込む方法を教えてください
xmlパーサを使用したAndroidアプリの読込み速度を向上させる方法を教えてください
お世話になっております。
xmlパーサについておききしたいことがございます。
現在、twitterリーダーアプリを製作中なのですが、
全ての行を読み込むと動作が重いので、
読み込む行の数を10行と指定したいのですが、
いい方法はありますでしょうか。
自分で試してみたところ、
表示させる行の数を指定することには成功したのですが、
いまいち、読込み速度の減少が実感できません。
お力をお貸し頂ければ幸いです。
よろしくお願いします。
// タグの識別子
private static final String PROFILE_IMAGE_URL = "profile_image_url";
public ArrayList<TwitterStatus> parse() {
ArrayList<TwitterStatus> list = null;
XmlPullParser parser = Xml.newPullParser();
try {
byte[] data = HttpClient.getByteArrayFromURL(urlStr);
parser.setInput(new StringReader(new String(data, "UTF-8")));
int eventType = parser.getEventType();
TwitterStatus currentStatus = null;
boolean isFinished = false;
while (eventType != XmlPullParser.END_DOCUMENT && !isFinished) {
String name = null;
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<TwitterStatus>();
break;
case XmlPullParser.START_TAG:
name = parser.getName();
if (name.equalsIgnoreCase(STATUS)) {
currentStatus = new TwitterStatus();
} else if (currentStatus != null) {
if (name.equalsIgnoreCase(TEXT)) {
currentStatus.setText(parser.nextText());
} else if (name.equalsIgnoreCase(SCREEN_NAME)) {
currentStatus.setScreenName(parser.nextText());
} else if (name.equalsIgnoreCase(PROFILE_IMAGE_URL)) {
// アイコンURLを取得
currentStatus.setProfileImageUrl(parser.nextText());
}
}
break;
case XmlPullParser.END_TAG:
name = parser.getName();
if (name.equalsIgnoreCase(STATUS) && currentStatus != null) {
list.add(currentStatus);
} else if (name.equalsIgnoreCase(STATUSES)) {
isFinished = true;
}
break;
}
eventType = parser.next();
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
}
お礼
good-failure様 いつもご回答ありがとうございます。 根本的に間違った考え方をしていたことに気付きました。 例えばですが、アクセスして表示したら、その内容をどこかに保管しておき、次に起動したときにはそのキャッシュされている内容をとりあえず表示する。同時に再アクセスし、新しいデータがダウンロード完了した段階で、キャッシュされたデータと比較し、新たな項目だけを追加して表示を更新する。多くのダウンロード型のデータ表示アプリは、だいたいそんな感じでアプローチしていると思います。 上記の方法で試してみたいと思います。 ありがとうございました!