【发布时间】: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