簡體   English   中英

當我刪除一個項目時,Recycler View列表會修改所有項目

[英]Recycler View list modifying all the items when I delete one

我在應用程序中插入了Recycler視圖以制作購物清單。

現在我有兩個問題。 當我將mUsers列表復制到JSON時,列表中的所有項目都會復制最后一項的值(例如,當我將列表復制到[Json]時,如果列表= [1,2,3,4],它會轉換為[ 4,4,4,4])。

在我的Recycler視圖上,項目正確顯示,但是當我從列表中刪除一個項目時,它會轉換它下面的列表(例如,如果我有一個列表[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());
    }
}

解決了難題,代碼正在運行。 問題是當我插入列表時,我每次都使用同一個對象(我只更新了它),所以每個位置上的指針都指向同一個對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM