如何在RecyclerView中更改属性TextView的文本



我在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");
}
});
}
}

最新更新