使用RecycleView实现Dialog内嵌多行多列CheckBox
首先放一个效果图(请无视我写错的标题)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5ff0ec209c8252593a5070b883119ce9.jpeg)
实现思路
首先定义一个dialog文件 因为我们不知道checkbox具体的数量 所以定义一个recycleView来通过数据动态加载 如果只想实现一排checkbox的话 item里面直接放checkbox就可以解决 网上也有很多相思教程这里就不再细说 如果想放置多列组件 item里面需要在定义一个recycleView 然后在定义需要使用的组件
首先先定义一个dialog的xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/colorWhite"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="360dp"
android:layout_height="40dp">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="部门"
android:textSize="24sp" />
</LinearLayout>
<LinearLayout
android:layout_width="360dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_checkboxList"
android:layout_width="match_parent"
android:layout_height="240dp" />
</LinearLayout>
<LinearLayout
android:layout_width="360dp"
android:layout_height="50dp"
android:orientation="horizontal"
android:padding="10dp">
<CheckBox
android:id="@+id/cb_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="end">
<TextView
android:id="@+id/tv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:background="@drawable/bg_blue_round_rect_8dp"
android:padding="5dp"
android:text="取消"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_blue_round_rect_8dp"
android:padding="5dp"
android:text="确定"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
再写第一层recycleView的item布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
接着是第二层recycleView的item的布局 这里可以放置你自己需要的组件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<CheckBox
android:id="@+id/cb_change"
android:textSize="18sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
在第一层adapter中设置一个属性
recyclrView.setLayoutManager(new GridLayoutManager(mContext, 2));
这个数字2就是用来控制列数的
剩下的就如同普通的adapter一样来编写
第一次写博客 写得不好的地方还请大家多多包涵 有不明白的可以在文章下面回复 希望大家共同进步 不喜勿喷 谢谢