单击项目时,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 项目时未打开新片段

单击后退按钮时,在 RecyclerView 中获得相同的项目位置

在使用 FirebaseRecyclerPagingAdapter 时,第二次单击 RecyclerView 中的项目时,片段显示为空

如何在单击 RecyclerView 项目时从一个片段移动到另一个片段

在Android recyclerVIew中单击项目时如何保存状态

单击项目时,Recyclerview onbindview 无法正常工作