Android开发GridView与CheckBox使用

在日常的开发中作为开发者的我们会用到许多列表控件,比如在Android5.0发布之前普遍存在的listview、GridView以及在Android5.0发布之后大家常用的RecyclerView,在这些列表控件的使用中我们偶尔会配合着CheckBox(复选框)一起使用,在使用过程中往往会出现item错乱以及选中的item丢失的各种情况,那么作为开发人员的我们来讲应该怎么解决呢?接下来就来说一说GridView和CheckBox在配合使用的过程中出现的问题以及解决方法:
第一步:创建布局文件与实现基本数据和适配器
(1)在XML布局中引入GirdView控件 在类文件里面进行相应的处理
(2)适配器的编写:定义一个类继承于BaseAdapter
第二步:解决item的重用
(1)在getView方法中处理
(2)定义一个内部类来减少各个控件的重用
接下来就来看看这两步的具体实现的代码:
一:
(1):布局引用
GridView
android:id=”@+id/gridView”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:numColumns=”4”
(2):适配器的编写
定义一个类,继承于BaseAdapter,然后实现getCount,getItem,getItemID,getView这四个基本的方法,在getView方法中处理item的重用
ViewHolder mHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.adapter_tejia_content_grid, null);
mHolder = new ViewHolder();
convertView.setTag(mHolder);
} else {
mHolder = (ViewHolder) convertView.getTag();
}
return convertView;
第三步:解决item配合CheckBox使用
(1):引用CheckBox,在布局文件中插入
(2):解决复用与错乱
代码编写:
(1):
CheckBox
android:id=”@+id/checkbox”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
(2):解决复用错乱
首先我们都知道CheckBox在使用的时候有两种状态,选中和未选中,在GirdView滑动的过程中随着item的重用,checkbox的状态也会随着被复用,那么在这个时候我们可以使用一个map集合在存储当前position的checkbox的状态,然后在
Android开发GridView与CheckBox使用_第1张图片
然后利用convertView的setTag方法把当前选中的position作为tag传出来,然后在checkbox的点击监听里面去判断如果是复用的那就设置他的状态为false,如果没有那就放入到map中去,但是这个地方需要注意的一点就是在setTag之前需要把checkbox的监听设置为null,原因是如果不设置为null那么系统无法判定这个tag和监听,任然会导致错乱。然后在监听的方法里面这样判断
Android开发GridView与CheckBox使用_第2张图片
其中需要注意的一点是在setTag之前必须要将监听设置为空,谢谢

你可能感兴趣的:(Android,checkbox)