我们假设我们有一个包含7个条目的RecyclerView 当我点击第5个适配器位置的视图时,有没有办法更改第2个适配器位置的内容?
答案 0 :(得分:0)
在适配器内部更改数组的第5个位置(您将传递给适配器)并且notifyDataSetChanged()
答案 1 :(得分:0)
保持条件(chaning内容)在onBindViewHolder和OnClick上调用notifyDataSetChanged();
答案 2 :(得分:0)
是的,这是可能的。
您需要更新已传递给适配器的列表的值。请更新列表中的期望位置值并通知数据集生效。
答案 3 :(得分:0)
是的,首先你必须在点击第5个位置然后调用adapter.notifyDataSetChanged()时更改第2项数组的内容 所以onBindViewHolder将被调用
或调用notifyItemChanged(1);
答案 4 :(得分:0)
是的,修改条目后可以使用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();
}
}