如何在RecyclerView
中更改行中的特定视图。 Adapter.notifyDataSetChanged
或Adapter.notifyItemChanged
更新行。但我需要更改行中的特定视图,而不要触及此行中的其他视图。
答案 0 :(得分:0)
您可以使用以下代码
MyRecyclerAdapter.ViewHolder viewHolder= (MyRecyclerAdapter.ViewHolder) recycleView.findViewHolderForAdapterPosition(1);
viewHolder.txtView.SetText("Some Text");
答案 1 :(得分:0)
首先,使用Glide(由谷歌)代替毕加索。效率更高。
其次,如果您的设备已经存在于缓存中,则不会再次下载相同的图像。
现在, 只需更改列表中的数据,然后更新适配器或回收站视图。
在AdapterClass中
创建一个界面,让我们说
public interface TheUpdater{
public void updateMyAdapter(int position);
}
然后在Activity中实现此接口并覆盖此方法。
现在,为了获得视图的位置。
您可以覆盖视图的onClick()
(按钮甚至整个父视图,即布局)并执行以下语句。
mTappedPosition = getAdapterPosition();
listener.updateMyAdapter(mTappedPosition); //Update the adapter
mTappedPosition
是您的全局变量。
在您的活动中
@Override
updateMyAdapter(int position){
---- //Do stuff
mAdapter.notifyItemSetChanged(position);
}
答案 2 :(得分:0)
我认为要避免图像加载问题,您必须使用图像缓存技术。因此,已加载的图像将不会再次加载。
或
如果图像已经加载并且每一行都显示相同的图像集,那么您可以为itemModel保留一个布尔标志(具有适配器项数据的dto)。并更改该模型然后调用
yourListToAdapter(index).setFlag(showImage1); // showImage1 boolean flag
yourAdapter.notifyItemChanged(index);