繁体   English   中英

在回收者视图中更改行中的特定项目

[英]Changing the specific item in row in recycler view

如何在RecyclerView更改行中的特定视图。 Adapter.notifyDataSetChangedAdapter.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM