这是一个菜鸟问题,但无论如何我都要问它,因为我想我很快就会发疯。
我想要实现的是ListView
,它由twitter填充,我已经实现了,这两个ListArray
由推文和图片网址填充。
这是成功的,但是当我刷新推特时,新的推特会低于旧版本。
我可以简单地清除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());
}
}
答案 0 :(得分:2)
创建一个从BaseAdapter扩展的适配器并调用notifyDataSetChanged()。
答案 1 :(得分:1)
听起来你真的想要一个集合而不是列表,并且能够根据某些标准(在这种情况下添加时间)来遍历它。 也许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());
}
}
答案 2 :(得分:1)
据推测,LazyAdapter派生自BaseAdapter,并由urlArray
支持。如果是这样,要让推文显示在顶部,您需要将它们添加到数组的开头。
使用add(0, newEntry)
至add to the beginning of the array和notifyDataSetChanged()
至tell the adapter to post the updates。
其他几点说明:
1)我不清楚你的意图,特别是看到像twww.equals(twwwwwww)
这样的代码。看起来你正在维护旧的推文并试图只添加新的推文,但是如twww, twwwwww, and tweetString
这样的变量名不清楚,我只能猜测。
2)您不必继续设置适配器。一旦设置了listview,adapter和backing数组之间的关系,你就应该只需更新数组并通知适配器。