Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.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
Java 回收器视图列表在我删除一个项目时修改所有项目_Java_Android_Json_List_Android Recyclerview - Fatal编程技术网

Java 回收器视图列表在我删除一个项目时修改所有项目

Java 回收器视图列表在我删除一个项目时修改所有项目,java,android,json,list,android-recyclerview,Java,Android,Json,List,Android Recyclerview,我在我的应用程序中插入了一个“回收者”视图来制作购物篮列表 现在我有两个问题。当我将mUsers列表复制到JSON时,列表中的所有项目都会复制最后一个项目的值(例如,如果我有一个列表=[1,2,3,4],当我将其复制到JSON时,它会转换为[4,4,4,4]) 在我的回收器视图中,项目显示正确,但当我从列表中删除一个项目时,它会转换其下方的列表(例如,如果我有一个列表[1,2,3,4],删除2,则列表会在[1,3,3]中转换) 这是我的RecyclerView代码: public class L

我在我的应用程序中插入了一个“回收者”视图来制作购物篮列表

现在我有两个问题。当我将mUsers列表复制到JSON时,列表中的所有项目都会复制最后一个项目的值(例如,如果我有一个列表=[1,2,3,4],当我将其复制到JSON时,它会转换为[4,4,4,4])

在我的回收器视图中,项目显示正确,但当我从列表中删除一个项目时,它会转换其下方的列表(例如,如果我有一个列表[1,2,3,4],删除2,则列表会在[1,3,3]中转换)

这是我的RecyclerView代码:

public class LineAdapter extends RecyclerView.Adapter<LineHolder> {

    private final List<Option> mUsers;

    public LineAdapter(ArrayList users) {
        mUsers = users;
    }

    @Override
    public LineHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new LineHolder(LayoutInflater.from(parent.getContext())
                .inflate(R.layout.main_line_view, parent, false));
    }

    @Override
    public void onBindViewHolder(LineHolder holder, final int position) {
        holder.title.setText(String.format(Locale.getDefault(), "%s",
                mUsers.get(position).getNome().label
        ));
        holder.subtitle.setText(String.format(Locale.getDefault(), "Detalhes: %s",
                mUsers.get(position).getDados()
        ));
        lista.add(mUsers.get(position));

        holder.deleteButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                removerItem(position);
            }
        });
    }

    @Override
    public int getItemCount() {
        return mUsers != null ? mUsers.size() : 0;
    }

    public List<Option> getList(){
        return mUsers;
    }

    public void updateList(Option user) {
        insertItem(user);
    }

    private void insertItem(Option user) {
        mUsers.add(user);
        notifyItemInserted(getItemCount());
    }

    private void removerItem(int position) {
        mUsers.remove(position);
        notifyItemRemoved(position);
        notifyItemRangeChanged(position, mUsers.size());
    }
}
公共类LineAdapter扩展了RecyclerView.Adapter{
私人最终名单;
public LineAdapter(ArrayList用户){
缪斯=用户;
}
@凌驾
public LineHolder onCreateViewHolder(视图组父级,int-viewType){
返回新的LineHolder(LayoutInflater.from(parent.getContext())
.充气(右布局主视图,父视图,假);
}
@凌驾
public void onBindViewHolder(LineHolder,最终int位置){
holder.title.setText(String.format(Locale.getDefault(),“%s”),
mUsers.get(position.getNome().label
));
holder.subtitle.setText(String.format(Locale.getDefault(),“详细信息:%s”),
mUsers.get(位置).getDados()
));
add(mUsers.get(position));
holder.deleteButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
项目(位置);
}
});
}
@凌驾
public int getItemCount(){
返回mUsers!=null?mUsers.size():0;
}
公共列表getList(){
回归缪斯者;
}
公共无效更新列表(选项用户){
插入项(用户);
}
专用void插入项(选项用户){
添加(用户);
notifyItemInserted(getItemCount());
}
专用项目(内部位置){
移除(位置);
已移除(位置)的项目;
NotifyItemRange已更改(位置,mUsers.size());
}
}

解决了这个问题,代码正在运行。问题是,当我插入列表时,我每次都使用同一个对象(我只是更新了它),所以每个位置上的指针都指向同一个对象