Android 长按 列表子类,从一个列表删除并到另外一个列表

做了一个小功能 记录一下

本人做的是一个编辑框监听输入的东西然后调用接口查找数据,返回到第一个列表里边,然后点击长按左边列表子项,左边列表删除子项然后右边列表添加左边删除的,右边一样的道理,再次输入编辑框返回的数据如果右边页面上存在不显示左边列表上,再次进入如果本地有值右边列表显示数据。

我把左右两个列表长按删除和添加的方法分享给大家,接口添加值的我相信大家都会。

效果图

device-2024-06-09-192933

直接上代码先是三个布局 ,

主布局

java 复制代码
    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="200dp"

        android:layout_marginStart="20dp"
        android:orientation="vertical">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/RL1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center" />
    </LinearLayout>


    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="200dp"
        android:layout_marginStart="20dp"
        android:orientation="vertical">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/RL2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center" />
    </LinearLayout>

两个列表子布局

java 复制代码
    <TextView
        android:id="@+id/recycle_view_tv"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:textColor="@color/black"
        android:gravity="center" />
java 复制代码
    <TextView
        android:id="@+id/recycle_view_tv"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:textColor="@color/black"
        android:gravity="center" />

CodeNameMap对象

java 复制代码
public class CodeNameMap {

    public String id;

    public String name;



    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



    @Override
    public String toString() {
        return "CodeName{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

然后是实现代码

java 复制代码
 public class MainActivity extends AppCompatActivity {


    RecyclerView mRL1;
    RecyclerView mRL2;


     //麻醉医师适配器
     Adapter1 mAdapter1;
     Adapter2 mAdapter2;

     //创建接口返回集合
     ArrayList<CodeNameMap> codeNameMaps1 = new ArrayList<>();
     //存放保存的集合
     ArrayList<CodeNameMap> codeNameMaps2 = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findView();
    }


     public void findView() {

         mRL1 =findViewById(R.id.RL1);
         mRL2 =findViewById(R.id.RL2);


         CodeNameMap codeNameMap = new CodeNameMap();
         codeNameMap.id="01";
         codeNameMap.name="张三";
         codeNameMaps1.add(codeNameMap);
         CodeNameMap codeNameMap1 = new CodeNameMap();
         codeNameMap1.id="02";
         codeNameMap1.name="李四";
         codeNameMaps1.add(codeNameMap1);
         CodeNameMap codeNameMap2 = new CodeNameMap();
         codeNameMap2.id="03";
         codeNameMap2.name="王五";
         codeNameMaps1.add(codeNameMap2);

         LinearLayoutManager linearLayoutManager2 = new LinearLayoutManager(MainActivity.this);
         mRL1.setLayoutManager(linearLayoutManager2);
         mAdapter1 = new Adapter1(codeNameMaps1);
         mRL1.setAdapter(mAdapter1);

         LinearLayoutManager linearLayoutManager3 = new LinearLayoutManager(MainActivity.this);
         mRL2.setLayoutManager(linearLayoutManager3);
         mAdapter2 = new Adapter2(codeNameMaps2);
         mRL2.setAdapter(mAdapter2);


         mAdapter1.setRemoveOnCallBack(new Adapter1.ReMoveOnCallBack() {
             @Override
             public void onRemove(CodeNameMap codeNameMap) {
                 codeNameMaps1.remove(codeNameMap);
                 codeNameMaps2.add(codeNameMap);
                 mRL2.setAdapter(mAdapter2);
                 mAdapter2.notifyDataSetChanged();
             }
         });

         mAdapter2.setRemoveOnCallBack(new Adapter2.ReMoveOnCallBack() {
             @Override
             public void onRemove(CodeNameMap codeNameMap) {
                 codeNameMaps2.remove(codeNameMap);
                 codeNameMaps1.add(codeNameMap);
                 mRL1.setAdapter(mAdapter1);
                 mAdapter1.notifyDataSetChanged();
             }
         });
     }
 }
相关推荐
奔跑吧 android25 分钟前
【android bluetooth 协议分析 06】【l2cap详解 11】【l2cap连接超时处理逻辑介绍】
android·bluetooth·l2cap·gd·aosp13
百锦再7 小时前
Android Studio开发中Application和Activity生命周期详解
android·java·ide·app·gradle·android studio·studio
移动开发者1号7 小时前
Android现代进度条替代方案
android·app
万户猴7 小时前
【Android蓝牙开发实战-11】蓝牙BLE多连接机制全解析1
android·蓝牙
RichardLai887 小时前
[Flutter 基础] - Flutter基础组件 - Icon
android·flutter
前行的小黑炭8 小时前
Android LiveData源码分析:为什么他刷新数据比Handler好,能更节省资源,解决内存泄漏的隐患;
android·kotlin·android jetpack
清霜之辰8 小时前
安卓 Compose 相对传统 View 的优势
android·内存·性能·compose
_祝你今天愉快8 小时前
再看!NDK交叉编译动态库并在Android中调用
android
一杯凉白开8 小时前
Android View 事件的分发机制 四句口诀 先问拦截再派送,子不处理父兜底, 一旦消费无后续, 滑动冲突靠逻辑。
android
冬田里的一把火38 小时前
[Android]导航栏中插入电源菜单
android