我有一个简单的适配器
public class ConversationListAdapter extends
RecyclerView.Adapter<Conversation.ViewHolder> {
private List<Conversation> items;
private Activity activity;
public ConversationListAdapter(Activity activity, List<Conversation> items) {
super();
this. items = items;
this.activity = activity;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
Conversation conversation = mItems.get(i);
viewHolder.name.setText(conversation.getName());
if ( conversation.getUrl() != null) {
Picasso.with(activity.getApplicationContext()).load(conversation.getUrl())
.into(viewHolder.imageView);
}
}
and a basic
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {..}
}
现在一直在片段中:
mRecyclerView.setAdapter(new ConversationAdapter(getActivity(), mItems));
现在我打电话给我的休息api来获取数据,并且它第一次工作很棒,一切都应该在哪里(比方说c只有2项,顺序是conv1和conv2)
private void handleResult(List<Conversation> c) {
items.clear()
items.addAll(c)
adapter.notifyDataSetChanged()
}
但是......现在如果我刷新例子并且List中的数据以不同的顺序(conv2然后是conv1)在adapter.notifyDataSetChanged()之后,我列表中的imageView都有相同的图片.. !但是textView却有正确的文字
这只发生在充满毕加索的视图中,并且无法理解为什么
有人可以帮我吗?
答案 0 :(得分:2)
你在任何适配器中使用if条件你还必须设置其中的一部分。我也不知道为什么会发生这种情况,如果给出了条件,它对于与此不匹配的孩子需要相同的条件,可能是android中的错误。请尝试其他部分。可能是你的工作。
答案 1 :(得分:1)
您必须更换适配器中的项目或使用新项目
创建新适配器第一个解决方案:
private void handleResult(List<Conversation> c) {
mRecyclerView.setAdapter(new ConversationAdapter(getActivity(), c));
}
第二个解决方案:
private void handleResult(List<Conversation> c) {
adapter.setList(c);
adapter.notifyDataSetChanged();
}
不要忘记在setList(List<Conversation> c)
Adapter
方法