Android 为什么从onCLick onBindViewHolder修改RecyclerView列表值时会发生更改?
我在RecyclerView``中有一个列表。每当我在Onclick insideAndroid 为什么从onCLick onBindViewHolder修改RecyclerView列表值时会发生更改?,android,android-recyclerview,Android,Android Recyclerview,我在RecyclerView``中有一个列表。每当我在Onclick insideOnBindViewHolder中更改任何对象值时,主列表值都会更改。我想要这个,但我不明白为什么会这样 它是否保证每当我在onBindViewHolder中更改对象时,它都会更改主列表 我认为这是由于参考或其他原因造成的 public class AttendanceAdapter extends RecyclerView.Adapter<AttendanceAdapter.ViewHolder> {
OnBindViewHolder
中更改任何对象值时,主列表值都会更改。我想要这个,但我不明白为什么会这样
它是否保证每当我在onBindViewHolder中更改对象时,它都会更改主列表
我认为这是由于参考或其他原因造成的
public class AttendanceAdapter extends RecyclerView.Adapter<AttendanceAdapter.ViewHolder> {
List<ChildAttendance> data ;
public AttendanceAdapter(List<ChildAttendance> childList) {
data=new ArrayList<>(childList);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
ChildAttendance child = data.get(position);
((ViewHolder) holder).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
child.setName("checked");
}
});
}
}
公共类AttendanceAdapter扩展了RecyclerView.Adapter{
列出数据;
公众出席人数表(儿童名单){
数据=新的ArrayList(子列表);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
ChildAttention child=data.get(位置);
((ViewHolder)holder.setOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图v){
child.setName(“选中”);
}
});
}
}
child.setName(“选中”)代码>更改数据中的值。我有一个很大的清单。它是否总是保证当我更改任何对象时主列表会更改
我在Recyclerview中有一个列表。每当我在中更改任何对象值时
在OnBindViewHolder中单击,主列表值将更改
这在Java中是正确的行为。因为。因此,每当您使用以下行实例化适配器时:
List<ChildAttendance> mainData; // assuming there are data here.
...
AttendanceAdapter adapter = new AttendanceAdapter(mainData);
列出主数据;//假设这里有数据。
...
AttendanceAdapter适配器=新AttendanceAdapter(主数据);
您的AttendanceAdapter.data
与mainData
指向同一位置。简而言之,AttendanceAdapter.data
是mainData
对象的别名。Yup通过引用列出pas。