[英]Changing the specific item in row in recycler view
如何在RecyclerView
更改行中的特定视图。 Adapter.notifyDataSetChanged
或Adapter.notifyItemChanged
更新行。 但是我需要更改该行中的特定视图,而无需触摸此行中的其他视图。
您可以使用以下代码
MyRecyclerAdapter.ViewHolder viewHolder= (MyRecyclerAdapter.ViewHolder) recycleView.findViewHolderForAdapterPosition(1);
viewHolder.txtView.SetText("Some Text");
首先,使用Glide (由Google提供)代替毕加索。 效率更高。
其次,如果您的设备已经存在于缓存中,则您的设备将不会再次下载该图像。
现在,只需更改列表中的数据,然后更新适配器或回收站视图。
在您的AdapterClass内部
假设创建一个接口
public interface TheUpdater{
public void updateMyAdapter(int position);
}
然后在您的Activity中实现此接口,并覆盖此方法。
现在,为了获得View的位置。
您可以覆盖视图(按钮或整个父视图,即Layout)的onClick()
)并执行以下语句。
mTappedPosition = getAdapterPosition();
listener.updateMyAdapter(mTappedPosition); //Update the adapter
其中mTappedPosition
是您的全局变量。
在你的活动中
@Override
updateMyAdapter(int position){
---- //Do stuff
mAdapter.notifyItemSetChanged(position);
}
我认为要避免图像加载问题,您必须使用图像缓存技术。 这样就不会再次加载已加载的图像。
要么
如果图像已经加载,并且每一行都显示相同的图像集,则可以为itemModel(具有适配器项的data的dto)保留一个布尔标志。 并更改该模型,然后调用
yourListToAdapter(index).setFlag(showImage1); // showImage1 boolean flag
yourAdapter.notifyItemChanged(index);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.