Android在listview添加checkbox实现

主界面CheckBoxinListViewActivity.java代码如下:

public class CheckBoxinListViewActivity extends Activity {   /** Called when the activity is first created. */                  private MyAdapter adapter;         private ListView listview;         private Button checkAll;         private Button noCheckAll;                       @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         listview = (ListView)findViewById(R.id.listview);         checkAll = (Button)findViewById(R.id.button1);         noCheckAll = (Button)findViewById(R.id.button2);         adapter = new MyAdapter();         listview.setAdapter(adapter);         checkAll.setOnClickListener(new OnClickListener() {                                                  @Override                         public void onClick(View v) {                                 adapter.checkAll();                         }                 });         noCheckAll.setOnClickListener(new OnClickListener() {                                                  @Override                         public void onClick(View v) {                                 adapter.noCheckAll();                         }                 });              }                    private class MyAdapter extends BaseAdapter{                          private ArrayList<Message> list= new ArrayList<Message>();                          public MyAdapter(){                     for(int i = 1 ;i<=100 ; i++){                             list.add(new Message("item_"+i));                     }             }                          public void checkAll(){                     for(Message msg:list){                             msg.isCheck = true;                     }                     notifyDataSetChanged();             }             public void noCheckAll(){                     for(Message msg:list){                             msg.isCheck = false;                     }                     notifyDataSetChanged();             }                  @Override                 public int getCount() {                         return list.size();                 }                  @Override                 public Object getItem(int position) {                         return null;                 }                  @Override                 public long getItemId(int position) {                         return 0;                 }                  @Override                 public View getView(int position, View convertView, ViewGroup parent) {                         ViewHolder viewHolder;                         if(convertView == null){                                 LayoutInflater inflater = LayoutInflater.from(CheckBoxinListViewActivity.this);                                 convertView = inflater.inflate(R.layout.listview_item, null);                                 viewHolder = new ViewHolder();                                 viewHolder.checkBox = (CheckBox)convertView.findViewById(R.id.checkBox1);                                 convertView.setTag(viewHolder);                         }else{                                 viewHolder = (ViewHolder)convertView.getTag();                         }                         final Message msg = list.get(position);                         viewHolder.checkBox.setText(msg.str);                         viewHolder.checkBox.setChecked(msg.isCheck);                         //注意这里设置的不是onCheckedChangListener,还是值得思考一下的                         viewHolder.checkBox.setOnClickListener(new OnClickListener() {                                                                  @Override                                 public void onClick(View v) {                                         if(msg.isCheck){                                                 msg.isCheck = false;                                         }else{                                                 msg.isCheck = true;                                         }                                                                          }                         });                         return convertView;                 }                  }     private class ViewHolder{             CheckBox checkBox;     } }

适配器所适配的消息Message.java如下:

public class Message {         public boolean isCheck;         public String str;         public Message(String str){                 this.str = str;         } }

main.xml代码如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical" android:layout_width="fill_parent"     android:layout_height="fill_parent">     <LinearLayout         android:layout_width="wrap_content"         android:layout_height="wrap_content">         <Button android:text="全选" android:id="@+id/button1"         android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>     <Button android:text="撤消" android:id="@+id/button2"         android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>     </LinearLayout>     <ListView android:id="@+id/listview" android:layout_height="fill_parent"         android:layout_width="fill_parent" />      </LinearLayout>

listview_item.xml代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:descendantFocusability="blocksDescendants"    ><LinearLayout android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"><CheckBox android:text="CheckBox" android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content"/></LinearLayout></LinearLayout>


版权声明:本文为博主原创文章,未经博主允许不得转载。

更多相关文章

  1. Android静态代码分析
  2. 【Android】附加Android源代码Androidandroid_gingerbread_javas
  3. Android中对NFC的实现代码分布在如下几个地方:
  4. Android简明开发教程二十四篇及示例代码下载
  5. Android ROM研究---如何在ubuntu下下载姜饼(Gingerbread)源代码
  6. Android手机重启的核心代码
  7. Android加载对话框,异步执行代码的封装类
  8. Android 的一些比较好的开源代码项目
  9. android 定位 代码关于android gps定位最容易出现崩溃的问题总结

随机推荐

  1. Android(安卓)SDK 2.3与Eclipse最新版开
  2. Android内存管理机制和内存泄漏分析及优
  3. 《Android(安卓)开发入门》我认识中的And
  4. Android源码分析之WindowManager.LayoutP
  5. Android音视频处理技术 视频录制
  6. 塔防游戏《android防御战》上线了
  7. Android周学习Step By Step(5)--常用widget
  8. 深入浅出 - Android系统移植与平台开发(六
  9. Android调用系统相机、自定义相机、处理
  10. XMPP协议实现原理介绍