完美解决Android在listview添加checkbox实现单选多选操作问题


在Android某些开发需求当中,有时候需要在listveiw中加入checkbox实现单选,多选操作。表面上看上去只是改变checkbox那么简单,然而实际开发中,实现起来并不是那么得心应手。尤其当listview比较多(比如屏幕最多只能显示10个item,但总共有12个item,也就是说listview的item数大于屏幕能够显示的item数)滑动屏幕的时候,由于适配器中getview()会重复使用被移除屏幕的item,所以会造成checkbox选择状态不正常的现象。自己在开发中碰到这样的问题很是苦恼,查了下资料,发现网上很少没有针对这类批量操作并没有一个完整的例子。搜了很多篇帖子才完美的实现这一常用的操作。所以在这里把这个Demo贴出来,供大家参考,希望能对大家有所帮助。

主界面的布局main.xml    这个就不多说什么

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="wrap_content"  
  5.     android:orientation="vertical" >  
  6.     <LinearLayout  
  7.         android:orientation="vertical"  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"  
  10.          >  
  11.         <TextView   
  12.             android:id="@+id/tv"  
  13.             android:layout_width="fill_parent"  
  14.             android:layout_height="50dip"  
  15.             android:textColor="#FCFCFC"  
  16.             android:textSize="11pt"  
  17.             android:gravity="center_vertical"  
  18.             android:layout_marginLeft="10dip"  
  19.             />   
  20.     <ListView  
  21.         android:id="@+id/lv"  
  22.         android:layout_width="fill_parent"  
  23.         android:layout_height="381dip"  
  24.         android:cacheColorHint ="#00000000"  
  25.          ></ListView>  
  26.     </LinearLayout>  
  27.     <RelativeLayout   
  28.         android:layout_width="fill_parent"  
  29.         android:layout_height="53dip"  
  30.         android:orientation="horizontal"  
  31.         >  
  32.         <Button   
  33.             android:id="@+id/selectall"  
  34.             android:layout_width="80dip"      
  35.             android:layout_height="50dip"  
  36.             android:layout_marginLeft="20dip"  
  37.             android:text="全选"  
  38.             android:gravity="center"  
  39.             />  
  40.         <Button   
  41.             android:id="@+id/inverseselect"  
  42.             android:layout_width="80dip"      
  43.             android:layout_height="50dip"  
  44.             android:layout_marginLeft="118dip"  
  45.             android:text="反选"  
  46.             android:gravity="center"  
  47.             />  
  48.         <Button   
  49.             android:id="@+id/cancel"  
  50.             android:layout_width="80dip"      
  51.             android:layout_height="50dip"  
  52.             android:layout_marginLeft="213dip"  
  53.             android:text="取消已选"  
  54.             android:gravity="center"  
  55.             />  
  56.     </RelativeLayout>  
  57. </LinearLayout>  
  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容