お世話になっております。 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; } }
↧