我在RecyclerView中有一个文本和按钮。我正在尝试在单击时更改TextView的文本。在某种程度上,我尝试在OnBindViewHolder中设置文本,但没有这样做,无论我在哪里单击按钮,文本都会更改最后一项回收器视图的文本,而不是我想要的特定位置。
这是我的适配器类-
TextView textView;
Button button;
@NonNull
@Override
public viewHl onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.un, parent, false);
return new viewHl(view);
}
@Override
public void onBindViewHolder(@NonNull viewHl holder, int position) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.geTextView().setText("hellow");
}
});
}
@Override
public int getItemCount() {
return 4;
}
public class viewHl extends RecyclerView.ViewHolder {
public viewHl(@NonNull View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.textView);
button=itemView.findViewById(R.id.button);
}
public TextView geTextView()
{
return textView;
}
}
}
[![enter image description here][1]][1]
[1]: https://i.stack.imgur.com/hlU1M.png
问题是您在适配器中持有对Button和TextView的单个引用。相反,您需要将其保留在视图中,这样每个项目都会保留其按钮和文本。
public class viewHl extends RecyclerView.ViewHolder {
private TextView textView;
private Button button;
public viewHl(@NonNull View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.textView);
button=itemView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText("hellow");
}
});
}
}