让我们假设我们有一个有 7 个条目的 RecyclerView。
当我单击第 5 个适配器位置的视图时,有没有办法更改第二个适配器位置的内容?
将您的条件(追逐内容(保留在 onBindViewHolder 和 OnClick 调用通知 DataSetChanged((;
是的,这是可能的。
您需要更新已传递给适配器的列表的值。请更新列表中的愿望位置值,并通知数据集生效。
在适配器内部数组的第 5 个位置(您正在传递给适配器(的更改并通知 DataSetChanged((
是的,首先您必须在单击第 5 个位置时更改数组的第 2 项内容,然后调用 adapter.notifyDataSetChanged((所以BindViewHolder将被调用
或调用通知项目已更改(1(;
是的,修改条目后可以使用notifyDataSetChanged()
。请参阅以下示例适配器代码。
public class SampleListAdapter extends RecyclerView.Adapter<SampleListAdapter.ViewHolder>{
private List<String> listData;
private Context context;
public SampleListAdapter(Context context){
this.context = context;
listData.add(0, "One");
listData.add(1, "Two");
listData.add(2, "Three");
listData.add(3, "Four");
listData.add(4, "Five");
listData.add(5, "Six");
listData.add(6, "Five");
}
public void swapList(List<String> listData) {
this.listData = listData;
notifyDataSetChanged();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView tvDeliveryName;
View view;
ViewHolder(View itemView) {
super(itemView);
view = itemView;
tvDeliveryName = itemView.findViewById(R.id.tv_course_name);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(context).inflate(R.layout.yout_layout, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String data = listData.get(position);
holder.tvDeliveryName.setText(data);
holder.view.setTag(position);
holder.view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos = (int) view.getTag();
if(pos == 1){
listData.remove(1);
listData.add(1, "Your Data");
swapList(listData);
}
}
});
}
@Override
public int getItemCount() {
return listData.size();
}
}