我正在尝试使用以下代码段更新recyclerview项目。
public void setItemToPostion(WatchListEpisodeBean watchListBean, int itemPosition) {
this.watchListBean.add(itemPosition, watchListBean);
notifyItemChanged(itemPosition);
}
工作正常。该位置的项目使用新数据更新。但问题是项目克隆到下一个位置(出现在下一个位置)。我没有发现我的代码有什么问题。
这是appcompat&支持设计lib版本:
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'
请帮我解决这个问题。提前谢谢。
答案 0 :(得分:6)
您的项目是克隆,因为您要添加项目。
尝试使用set
代替此{/ 1}}
add
答案 1 :(得分:1)
如果您只是更新视图的一部分,请使用notifyItemChanged()
代替notifiyDataSetChanged()
。这里的差异与结构变化与项目变更有关。这是在android开发者的RecyclerView.Adapter文档中找到here。
这是两种类型变化之间差异的另一个消息:
有两种不同类别的数据更改事件,即项目更改 和结构变化。项目更改是指单个项目具有的项目 数据已更新,但未发生任何位置更改。结构 更改是在数据中插入,删除或移动项目的时间 组。
答案 2 :(得分:-3)
使用SELECT old.title,old.year FROM Movies AS OLD INNER JOIN Movies AS New ON Old.Title = New.Title WHERE DATEDIFF(Year,Old.Year,New.Year) < 0
代替notifyDataSetChanged();