我想要做这样的事情。
同时按下刷新按钮,它会刷新列表。 活动代码是这样的:
adapter = new TweetAdapter(Welcome.this, tweets, users);
tweetsList.setAdapter(adapter);
private void refreshAdapter() {
adapter.clear();
adapter.refresh(tweets, users);
}
refreshAdapter()
调用的时候,我需要改变的列表项。 这里tweets
和users
是ArrayList
和HashMap
项目
和接头部分是这样的:
public void clear() {
this.tweets.clear();
this.users.clear();
}
public void refresh(ArrayList<Tweet> tweets, HashMap<String, User> users) {
this.tweets.addAll(tweets);
this.users.putAll(users);
Collections.sort(this.tweets, new TweetTimeComparator());
notifyDataSetChanged();
}
但不幸的是notifyDataSetChanged();
不管用。 通过单击刷新列表要么变成黑色(最长时间)或没有响应(一些时间)。
请告诉我,如果你发现错误,或者建议我做什么。
我认为你正在清理数据
this.tweets.clear();
this.users.clear();
..我觉得作为微博和用户都具有相同的refreance(从活动到适配器通过),所以两者的鸣叫和两个用户(在适配器和活动都指向相同的ArrayList),所以都是GET-清楚,所以这行没有意义因为二者都是空
this.tweets.addAll(tweets);
this.users.putAll(users);
尝试
public TweetAdapter(Context context, ArrayList<Tweet> tweets, HashMap<String, User> users) {
mInflater = LayoutInflater.from(context);
this.tweets = new ArrayList<Tweet>();
this.users = new HashMap<String, User>();
this.tweets.addAll(tweets);
this.users.putAll(users);
Collections.sort(this.tweets, new TweetTimeComparator());
}
..
public void refresh(ArrayList<Tweet> tweets, HashMap<String, User> users) {
this.tweets.clear();
this.users.clear();
this.tweets.addAll(tweets);
this.users.putAll(users);
Collections.sort(this.tweets, new TweetTimeComparator());
notifyDataSetChanged();
}
但要注意:现在,参照上述两个鸣叫(在适配器和活动)和两个用户(在适配器和活动)是不同的。
应该没有直接分配如adapter.tweets = activity.tweets任何其他地方使用this.tweets.addAll(微博);