[英]For-loop inside a For-loop - ListArrays - Android, Java!
這是一個菜鳥問題,但無論如何我都要問它,因為我想我很快就會發瘋。
我想要實現的是一個由twitter填充的ListView
,我已經實現了,這兩個ListArray
由tweet和圖片URL填充。 這是成功的,但是當我刷新推特時,新的推特會低於舊的推特。
我可以簡單地清除ListArrays但是然后所有的twitter都會在列表中消失,這是不可取的,我只是想添加新的推文,並使新的推文在列表之上。
所以我想這是一個雙重問題
真的可以使用一些很棒的輸入,下面的代碼是(凌亂)代碼中最重要的部分,也就是刷新方法。
public void updateTwitter(){
twitter = new TwitterFactory().getInstance();
try {
QueryResult result = twitter.search(new Query(TWEETQUERY));
tweets = result.getTweets();
for (Tweet tweet : tweets) {
String tweetProfile = tweet.getProfileImageUrl();
String twwwwww = tweet.getText();
for(String tww : tweetString){
if(tww.equals(twwwwww)){
System.out.println("Not added");
} else {
tweetString.add(twwwwww);
urlArray.add(tweetProfile);
}
}
}
if(adapter != null) {
tweetList.setAdapter(adapter);
System.out.println("adapter sets, not created");
} else {
adapter = new LazyAdapter(this, urlArray, tweetString);
tweetList.setAdapter(adapter);
}
} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to search tweets: " + te.getMessage());
}
}
創建一個從BaseAdapter擴展並調用notifyDataSetChanged()的適配器。
聽起來你真的想要一個集合,而不是列表,並且能夠根據某些標准遍歷它(在這種情況下添加時間)。 也許SortedSet會合適嗎?
實現將是這樣的:
/* SortedSet<Tweet> tweets defined somewhere above, possibly with a custom Comparator */
public void updateTwitter()
{
try
{
tweets.addAll(TwitterFactory.getInstance().search(query).getTweets());
} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to search tweets: " + te.getMessage());
}
}
據推測,LazyAdapter派生自BaseAdapter,並由urlArray
支持。 如果是這樣,要將推文顯示在頂部,您需要將它們添加到數組的開頭。
使用add(0, newEntry)
添加到數組的開頭,使用 notifyDataSetChanged()
告訴適配器發布更新 。
其他幾點說明:
1)我不清楚你的意圖,特別是看到像twww.equals(twwwwwww)
這樣的代碼。 看起來你正在維護舊的推文,並試圖只添加新的推文,但有不明確的變量名稱,如twww, twwwwww, and tweetString
,我只能猜測。
2)您不必繼續設置適配器。 設置listview,適配器和后備陣列之間的關系后,您只需更新陣列並通知適配器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.