【问题标题】:Recyclerview onbindview don't work correct when Click on item单击项目时,Recyclerview onbindview 无法正常工作
【发布时间】: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 持有人的回复,只需将其更改为最终持有人,其工作正常

标签: java android android-recyclerview android-listview onclick


【解决方案1】:

找到解决该问题的方法,列表上的使用值动画必须更改

holder

final holder

它的工作正常

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多