2016-11-18 6 views
0

次のコードスニペットを使用して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' 

は、この問題を解決するために私を助けてください。前もって感謝します。あなたがアイテムを追加しているので、

+0

上記のメソッドを呼び出す場所でアダプタコードを送信します。 – Raghavendra

+0

答えを得たRahavendra ...ありがとう... –

答えて

6

あなたのアイテムの使用notifyDataSetChanged();はクローンです。あなたは、単にビューの一部を更新している場合

この

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

代わりnotifyItemChanged(itemPosition);

+1

Jinal Patel、なぜ説明できますか? –

1

ようsetの代わりaddを使用してみてください、代わりにnotifiyDataSetChanged()notifyItemChanged()使用。ここでの違いは、の構造変更対アイテムの変更と関係があります。これはアンドロイドデベロッパーのRecyclerView.Adapterドキュメントにあります。hereです。ここで

変更の2つのタイプの違いの他ちらほらです:データ変更イベントの2つの異なるクラスがあります

、アイテムは 、構造上の変更を変更します。アイテムの変更は、1つのアイテムに のデータが更新されていても、位置の変更が発生していない場合です。構造 は、データがアイテム内に挿入、削除、または移動されたときに変更されます。

関連する問題