Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么从onCLick onBindViewHolder修改RecyclerView列表值时会发生更改?_Android_Android Recyclerview - Fatal编程技术网

Android 为什么从onCLick onBindViewHolder修改RecyclerView列表值时会发生更改?

Android 为什么从onCLick onBindViewHolder修改RecyclerView列表值时会发生更改?,android,android-recyclerview,Android,Android Recyclerview,我在RecyclerView``中有一个列表。每当我在Onclick insideOnBindViewHolder中更改任何对象值时,主列表值都会更改。我想要这个,但我不明白为什么会这样 它是否保证每当我在onBindViewHolder中更改对象时,它都会更改主列表 我认为这是由于参考或其他原因造成的 public class AttendanceAdapter extends RecyclerView.Adapter<AttendanceAdapter.ViewHolder> {

我在RecyclerView``中有一个列表。每当我在Onclick inside
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。