Android listview中使用checkbox
下面开始正题,在listview的item中使用checkbox,当你按照普通的listview的用法使用时,你会遇到下面这样的问题:
1.checkbox可以点击,但是listview的item无法点击
2.无法获得checkbox被点击的是哪一行
第一个问题涉及到事件分发,下一篇再扯(我会按照我的理解,通俗易懂的来描述),第二个问题我的理解就是getview无法重绘的原因,这里拿不到position的值,为了能解决我的问题,我需要换一种思路,也就是我今天介绍的方法:屏蔽checkbox的选择事件,也就是说checkbox不能响应选中事件,当用户点击listview的item时,制造假象,用代码控制选中checkbox
恩,差不多就这些了,由于代码直接写到项目中了,就不写demo了,直接贴一下主要代码,仅供参考,如果您有更好的方法可以相互交流
1,设置 checkbox无法响应点击事件
android:clickable="false" android:focusable="false" android:focusableInTouchMode="false"
2.适配器中声明一个值用来控制checkbox的选中情况
private static HashMap<Integer,Boolean> isSelected;
public static HashMap<Integer,Boolean> getIsSelected() { return isSelected; } public static void setIsSelected(HashMap<Integer,Boolean> isSelected) { MyDocShowAdapter.isSelected = isSelected; }
isSelected = new HashMap<Integer, Boolean>(); for(int i=0; i<list.size();i++) { getIsSelected().put(i,false); }
3.根据item的点击情况,给checkbox赋值
mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ViewHolder holder = (ViewHolder) view.getTag(); holder.mCheckBox.toggle(); MyDocShowAdapter.getIsSelected().put(position, holder.mCheckBox.isChecked()); } });
今天就到这,有问题请留言,多交流
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。