2016-11-18 87 views
0

我试图更新使用下面的代码片段的recyclerview项目。如何更新recyclerview中的单个项目?

public void setItemToPostion(WatchListEpisodeBean watchListBean, int itemPosition) { 
    this.watchListBean.add(itemPosition, watchListBean); 
    notifyItemChanged(itemPosition); 
} 

它工作正常。这是位置更新的数据。但问题是项目被克隆到下一个位置(出现在下一个位置)。我没有发现我的代码有什么问题。

这是程序兼容性&支持设计的lib版本:

compile 'com.android.support:appcompat-v7:23.2.0' 
compile 'com.android.support:design:23.2.0' 

请帮我解决这个问题。提前致谢。而不是notifyItemChanged(itemPosition);

+0

邮政其中u R电话上述方法中的适配器代码。 – Raghavendra

+0

得到的答复Rahavendra ...谢谢... –

回答

-1

使用notifyDataSetChanged();是克隆,因为你要添加的项目。

尝试使用set而不是add这样

public void setItemToPostion(WatchListEpisodeBean watchListBean, int itemPosition) { 
    this.watchListBean.set(itemPosition, watchListBean); 
    notifyItemChanged(itemPosition); 
} 
+1

Jinal帕特尔,能否请你解释一下为什么? –

1

如果你简单地更新视图的一部分,使用notifyItemChanged()代替notifiyDataSetChanged()。这里的区别有VS项改变与结构变化有关。这是关于android开发人员RecyclerView.Adapter的文档,发现here

这里是关于两种类型的变化的之间的差异另一珍闻:

有两种不同类别的数据改变事件,项目改变 和结构的变化。项目的变化是,当一个项目有它的更新 数据,但没有发生位置变化。当被插入,除去或数据 集内移动的项目结构 变化。