簡體   English   中英

從一個 recyclerview 中刪除一個項目並將其添加到另一個

[英]remove an item from one recyclerview and add it to another

我有兩個 recyclerviews,當我單擊回收器 1 中的一個項目時,我希望將其刪除並將其添加到回收器 2 中。我嘗試在適配器中執行此操作,但它返回 null。 有人知道如何實現嗎? 更新 1:

我的綁定方法:

   public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
        holder.title.setText(tasks.get(position).getTitle());
        holder.description.setText(tasks.get(position).getDescription());
        if(!tasks.get(position).getActive())
            holder.checkBox.setChecked(true);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        holder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!holder.checkBox.isChecked()){
                    mainActivity.finishedItems.add(tasks.get(position));
                    mainActivity.items.remove(tasks.get(position));
                }
                else if(holder.checkBox.isChecked()){
                    mainActivity.items.add(tasks.get(position));
                    mainActivity.finishedItems.remove(tasks.get(position));
                }

            }
        });
    }

主要活動:

    public ArrayList<TaskModel> items;
    public ArrayList<TaskModel> finishedItems;
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        items = new ArrayList<>();
        finishedItems = new ArrayList<>();

        RecyclerViewAdapter RecyclerViewAdapter = new RecyclerViewAdapter(this,items);
        listView.setLayoutManager(new LinearLayoutManager(this));
        listView.setAdapter(RecyclerViewAdapter);

ps:我的數組列表中有項目,它們不是空的。

好吧,沒有人再次回答我,我自己找到了解決方案:我在適配器中添加了兩個 Arraylist,並在適配器本身內交換了數據。

適配器:

public class RecyclerViewAdapter extends RecyclerView.Adapter<ViewHolder> {
    private ArrayList<TaskModel> tasks;
    private ArrayList<TaskModel> tasks2;
    private Context context;



    public RecyclerViewAdapter(Context context, ArrayList<TaskModel> list1, ArrayList<TaskModel> list2){
        tasks = list1;
        tasks2 = list2;
        this.context = context;
    }
    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
        holder.title.setText(tasks.get(position).getTitle());
        holder.description.setText(tasks.get(position).getDescription());

        holder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                        tasks2.add(tasks.get(position));
                        tasks.remove(position);
                        MainActivity.listView.getAdapter().notifyDataSetChanged();
                        MainActivity.finishedListView.getAdapter().notifyDataSetChanged();
            }
        });
    }

暫無
暫無

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

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