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>

囧神的世界你不懂,虫哥的生活你没有,只有程序猿的世界大家才知道。程序猿们,为了自己的精彩世界奋斗吧,努力吧!加油……

时间: 2024-08-02 06:14:12

Android在listview添加checkbox实现原理与代码的相关文章

Android在listview添加checkbox实现原理与代码_Android

主界面CheckBoxinListViewActivity.java代码如下: 复制代码 代码如下: public class CheckBoxinListViewActivity extends Activity { /** Called when the activity is first created. */ private MyAdapter adapter; private ListView listview; private Button checkAll; private But

Android中ListView绑定CheckBox实现全选增加和删除功能(DEMO)_Android

ListView控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adapter的用法,加了很多的判断等等等等-.我们先来看看实现的效果吧! 好的,我们新建一个项目LvCheckBox 我们事先先把这两个布局写好吧,一个是主布局,还有一个listview的item.xml,相信不用多说 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

Android中ListView绑定CheckBox实现全选增加和删除功能(DEMO)

ListView控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adapter的用法,加了很多的判断等等等等-.我们先来看看实现的效果吧! 好的,我们新建一个项目LvCheckBox 我们事先先把这两个布局写好吧,一个是主布局,还有一个listview的item.xml,相信不用多说 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

android给listview添加下拉刷新崩溃

问题描述 android给listview添加下拉刷新崩溃 logcat: 10-09 15:17:36.549 15984-15984/com.example.jkd.fchangshi D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000 10-09 15:17:36.549 15984-15984/com.example.jkd.fchangshi I/dalvikvm﹕ Could not find method android.view.Vi

Android 为ListView添加分段标头的方法

效果图: 我记得github上有一个类似的效果github类似效果 说一下实现这个效果的思路:在列表项中嵌入分段标头,然后根据需要显示或者隐藏分段标头,创建一个特殊的TextView,让其叠加在列表的顶部,当列表滚动到一个新的分段时,就更新其内容 创建列表布局 创建一个xml,随列表滚动的分段标头和列表顶部的固定分段标头复用这个布局文件 header.xml <?xml version="1.0" encoding="utf-8"?> <TextV

android基于ListView和CheckBox实现多选和全选记录的功能_Android

应用开发中经常会有从数据库中读取数据显示,然后选中多条.全部记录并且删除的需求.在做定制系统联系人的时候也遇到这样的需求,下面写个简单的通过ListView和CheckBox实现多选.全选的例子.下面是具体的代码. 效果如下: MultiSelectActivity /** * MultiSelectActivity */ public class MultiSelectActivity extends Activity implements OnClickListener, OnItemCli

android基于ListView和CheckBox实现多选和全选记录的功能

应用开发中经常会有从数据库中读取数据显示,然后选中多条.全部记录并且删除的需求.在做定制系统联系人的时候也遇到这样的需求,下面写个简单的通过ListView和CheckBox实现多选.全选的例子.下面是具体的代码. 效果如下: MultiSelectActivity /** * MultiSelectActivity */ public class MultiSelectActivity extends Activity implements OnClickListener, OnItemCli

Android中ListView结合CheckBox实现数据批量选择(全选、反选、全不选)

APP的开发中,会常遇到这样的需求:批量取消(删除)List中的数据.这就要求ListVIew支持批量选择.全选.单选等等功能,做一个比较强大的ListView批量选择功能是很有必要的,那如何做呢? 可想而知,要支持批量选择,那CheckBox的使用是不可或缺的,下面,就使用ListView结合CheckBox实现数据的批量选择. 先看下效果图,有图有真相: 先说明接下来要实现的ListView+CheckBox支持的功能: 1.  外部点击"编辑"(长按ListView的某一项也可)

Android的ListView多选删除操作实现代码_Android

最近尝试做了个listview的多选demo,网上看其他人的例子感觉不是很难,自己动手做了下,各种细节问题,没那么简单啊.既然做了,简单写个笔记记录下. 练手demo,命名笔记乱,不要介意哦. 主界面布局activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/to