2017-04-24 134 views
0

我有一個RecyclerView這是得到喜愛和Unfavourite項目的列表。在項目onClick中有一個星形圖標,我打電話給一個API,該API返回添加到收藏夾或從收藏夾中刪除。 我現在想以更新RecyclerView更新RecyclerView中的項目視圖

我的任務OnSuccess星形圖標我與這個代碼

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

更新我的名單在我的適配器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

0123〃方法刷新recyclerView適配器中的項目,他們再次通過onBindViewHolder狀態。

如果修改了你反對適當持有最愛值(真/假) 然後裏面的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方法,並且方法中的代碼將爲你處理!

檢查由我創建了一個類似的項目,here

+0

我已經在我的適配器代碼中做了這個。請參閱 – NarenderNishad

+1

,您正在調用notifyItemChanged方法,然後再調用notifydatachanged方法。所以在技術上你不需要它們,試試這個,在列表中更新模型中的值(你用RV適配器綁定的列表),並且一旦你改變了列表中的值,就調用'notifyDataSetChaged'。但請記住,您必須修改列表中的項目。 – MadScientist

0

您還可以通過使用notifyItemChanged達到相同的,但在那種情況下,你將需要在該位置這將刷新適配器視圖更新實體。

+0

我正在調用adapterParcel.notifyItemChanged(position,modelParcelsArrayList); – NarenderNishad

+0

但是你是否正在修改modelParcelArraylist中該實體的實體,該實體會反映出你的視圖 – Aditi

+0

我正嘗試在視圖中使用布爾值對其進行修改。 – NarenderNishad

相關問題