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的状态,然后在
这里写图片描述
然后利用convertView的setTag方法把当前选中的position作为tag传出来,然后在checkbox的点击监听里面去判断如果是复用的那就设置他的状态为false,如果没有那就放入到map中去,但是这个地方需要注意的一点就是在setTag之前需要把checkbox的监听设置为null,原因是如果不设置为null那么系统无法判定这个tag和监听,任然会导致错乱。然后在监听的方法里面这样判断
这里写图片描述
其中需要注意的一点是在setTag之前必须要将监听设置为空,谢谢

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值