单击项目时,Recyclerview onbindview 无法正常工作
Posted
技术标签:
【中文标题】单击项目时,Recyclerview onbindview 无法正常工作【英文标题】:Recyclerview onbindview don't work correct when Click on item 【发布时间】:2021-03-24 03:45:34 【问题描述】:我尝试更新列表项重量代码工作正常
@NonNull
@Override
public viewlistx onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
View xd = getLayoutInflater().inflate(R.layout.lay_yesno_list,parent,false);
return new viewlistx(xd);
@Override
public void onBindViewHolder(@NonNull viewlistx holder, final int position)
btyesi = holder.btyes;
holder.btyes.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
Log.w("click","pos: " + position);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) btyesi.getLayoutParams();
params.weight = 2.0f;
btyesi.setLayoutParams(params);
);
@Override
public int getItemCount()
return 4;
public class viewlistx extends RecyclerView.ViewHolder
private final TextView btyes;
public viewlistx(@NonNull View itemView)
super(itemView);
btyes = itemView.findViewById(R.id.yesbtx);
但问题是当我单击一个项目时,它会更改下一个项目的重量
例如 pos, 0 点击 pos 1 项目值变化或 pos 1 点击 pos 2 项目值变化
我做错了什么?
【问题讨论】:
尝试在 btyesi.setLayoutParams(params) 下添加 notifyItemChanged(position);这将以新的权重刷新视图。 @PrinceAli 我尝试了同样的行为 @PrinceAli 适配器上什么都没有,只有一个文本视图在班轮布局中,但我会发送整个适配器代码发送它 @PrinceAli 我发送了整个适配器代码你现在能告诉我问题出在哪里吗? @PrinceAli ty 对于我发现问题出在 onbindview 持有人的回复,只需将其更改为最终持有人,其工作正常 【参考方案1】:找到解决该问题的方法,列表上的使用值动画必须更改
holder
到
final holder
它的工作正常
【讨论】:
以上是关于单击项目时,Recyclerview onbindview 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
单击后退按钮时,在 RecyclerView 中获得相同的项目位置
在使用 FirebaseRecyclerPagingAdapter 时,第二次单击 RecyclerView 中的项目时,片段显示为空
如何在单击 RecyclerView 项目时从一个片段移动到另一个片段