2017-04-24 136 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

相关问题