Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 从RecyclerView中删除项目并将其添加到同一活动中的第二个RecyclerView_Android_Android Recyclerview - Fatal编程技术网

Android 从RecyclerView中删除项目并将其添加到同一活动中的第二个RecyclerView

Android 从RecyclerView中删除项目并将其添加到同一活动中的第二个RecyclerView,android,android-recyclerview,Android,Android Recyclerview,这是我的问题 我在同一活动中有两个RecyclerViews。第一个(RecView1)当然有一个适配器,第二个(RecView2)有不同的适配器 我想: 单击RecView1中卡的按钮,该卡将从列表中删除,并显示在RecView2中 我做了一件非常糟糕的事我想: 在RecView1适配器中: public LSAdapterBottom(List<ListaInfo> sList,List<ListaInfo> lSMain, LSActivity lSAc

这是我的问题

我在同一活动中有两个RecyclerViews。第一个(RecView1)当然有一个适配器,第二个(RecView2)有不同的适配器

我想:

  • 单击RecView1中卡的按钮,该卡将从列表中删除,并显示在RecView2中
我做了一件非常糟糕的事我想:

在RecView1适配器中:

    public LSAdapterBottom(List<ListaInfo> sList,List<ListaInfo> lSMain, LSActivity lSActivity) {

    this.sList = sList;//list of the current adapter
    this.lSMain = lSMain; //second list where I want to put the item here deleted
    this.lSActivity = lSActivity; //activity which has the two recview 
    }        


    public void onBindViewHolder(LSViewBottomHolder cViewHolder, final int i) {
        final Item item = sList.get(i);

        cViewHolder.ics.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                lSMain.add(item);
                lSActivity.notifyRitornoInLista(); //public method of the activity which simply calls the other adapter to invoke the notifyDataSetChanged() to update the other recview.

                sList.remove(i);
                notifyDataSetChanged();


            }
        });
public LSAdapterBottom(列表sList、列表lSMain、LSActivity-LSActivity){
this.sList=sList;//当前适配器的列表
this.lSMain=lSMain;//要将项目放在此处的第二个列表已删除
this.lSActivity=lSActivity;//具有两个recview的活动
}        
BindViewHolder上的公共无效(LSViewBottomHolder cViewHolder,最终int i){
最终项目=sList.get(i);
cViewHolder.ics.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
lSMain.add(项目);
lSActivity.notifyRitornoInLista();//该活动的公共方法,它只调用另一个适配器来调用notifyDataSetChanged()来更新另一个recview。
滑动。移除(i);
notifyDataSetChanged();
}
});
我认为这确实是一个肮脏的解决方案,但它正在发挥作用。我想知道一种更干净的方法来达到同样的效果。
提前谢谢。

只是一个想法,使用接口而不是公共方法。当在RV1上单击事件通过侦听器删除项目时,它将收到活动通知,然后该项目将添加到RV2上。然后刷新视图。好的。但是您认为将listActivity传递给适配器是一个好主意吗?我想传递项目(将从RV1中删除)通过接口从适配器(RV1的)中删除,以在活动中接收(其中RV1、RV2初始化),然后在RV2上添加该项。