簡體   English   中英

for循環中的for循環 - ListArrays - Android,Java!

[英]For-loop inside a For-loop - ListArrays - Android, Java!

這是一個菜鳥問題,但無論如何我都要問它,因為我想我很快就會發瘋。

我想要實現的是一個由twitter填充的ListView ,我已經實現了,這兩個ListArray由tweet和圖片URL填充。 這是成功的,但是當我刷新推特時,新的推特會低於舊的推特。

我可以簡單地清除ListArrays但是然后所有的twitter都會在列表中消失,這是不可取的,我只是想添加新的推文,並使新的推文在列表之上。

所以我想這是一個雙重問題

  1. 如何使列表僅添加哪些不存在?,和
  2. 如何讓最新的推文出現在最頂層?

真的可以使用一些很棒的輸入,下面的代碼是(凌亂)代碼中最重要的部分,也就是刷新方法。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM