2017-04-24 6 views
0

私はRecyclerViewを持っています。お気に入りとUnfavouriteアイテムのリストを取得しています。 onClickアイテムの中にスターアイコンがあります。このアイコンは、お気に入りに追加されたりお気に入りから削除されたりするAPIを呼び出しています。 今、私は私のアダプタでは、このコードRecyclerViewのアイテムビューを更新する

adapterParcel.notifyItemChanged(position, modelParcelsArrayList); 
         adapterParcel.notifyDataSetChanged(); 

と私のリストを更新しています、私の仕事のRecyclerView

OnSuccessのスターアイコンを更新しようとしていますonBindViewHolder私はこのコードでビューを更新しようとしています

if (singleModelParcels.is_favouriteParcel()) { 
       itemListHolder.rpl_iv_favorite.setBackgroundResource(R.drawable.ic_action_fav_yellow); 
      } else { 
       itemListHolder.rpl_iv_favorite.setBackgroundResource(R.drawable.ic_action_fav_white); 
      } 

このアイテムの表示を更新するにはどうすればよいですか?

答えて

2

notifyDataSetChangedメソッドは、recyclerViewアダプタのアイテムをリフレッシュします。彼らは再びonBindViewHolder州を通過します。あなたが変更した場合

あなたは(真/偽)FAV値を保持するために、適切にオブジェクト その後、内部onBindViewHolderすることができますビューを設定した値の単純なアクセス、このような何か:

@Override 
    public void onBindViewHolder(final ViewHolder holder, final int position) { 
    Object object = objectList.get(position); 
    if (object.isFav()){ 
    holder.favIcon.highlight(); 
    }else{ 
    holder.favIcon.unhighlight(); 
    } 
} 

だから、すべてのアダプタのnotifyDataSetChangedメソッドを呼び出すと、onBindViewHolder mthodのコードがそれを処理します。

チェック私が作成した同様のプロジェクト、here

+0

私はすでにアダプターコードでこれを行っています。 – NarenderNishad

+1

を参照してください。notifyItemChangedメソッドを呼び出すと、notifydatachangedメソッドも呼び出されます。技術的には必要ありません。これを試してみてください。モデル内の値をリスト(RVアダプタとバインドしたリスト)内の値を更新し、リストの値を変更したら 'notifyDataSetChaged'を呼び出してください。あなたのリストの項目を変更する必要があることを忘れないでください。 – MadScientist

0

はまたnotifyItemChangedを使用して同じことを達成することができますが、そのシナリオでは、あなたは、アダプタの表示を更新します、その位置でエンティティを更新する必要があります。

+0

私はそのadapterParcel.notifyItemChanged(position、modelParcelsArrayList)を呼び出しています。 – NarenderNishad

+0

しかし、adPater内のビューを反映するその位置のmodelParcelArraylistのエンティティを変更しています – Aditi

+0

ブール値を使用してビューでアダプタで変更しようとしています。 – NarenderNishad

関連する問題