如何在recyclerview中更新单个项目?

时间:2016-11-18 06:20:12

标签: android android-recyclerview

我正在尝试使用以下代码段更新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'

请帮我解决这个问题。提前谢谢。

3 个答案:

答案 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();