关于ListView的item中含有checkbox,并判断选中的数目
来源:互联网 发布:mac 双系统 win10 编辑:程序博客网 时间:2024/05/20 07:59
1.废话不多说,直接上代码。
package com.example.testchecxbox;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
/**
* ListView中含有checkbox,并且判断checkbox选中的个数
* */
public class MainActivity extends Activity {
private ListView mListView;
private ArrayList<String> groups;
private MulAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView)findViewById(R.id.listview);
groups = new ArrayList<String>();
//以下是要加载的数据源
groups.add("11");
groups.add("22");
groups.add("33");
groups.add("44");
groups.add("55");
groups.add("66");
groups.add("77");
groups.add("88");
groups.add("99");
groups.add("00");
groups.add("11");
groups.add("22");
groups.add("33");
groups.add("44");
groups.add("55");
groups.add("66");
groups.add("77");
groups.add("88");
groups.add("99");
groups.add("00");
AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤
MulAdapter.ViewHolder viewHolder = (MulAdapter.ViewHolder) view.getTag();
viewHolder.cb.toggle();// 把CheckBox的选中状态改为当前状态的反,gridview确保是单一选中
}
};
adapter = new MulAdapter(this, groups);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(listItemClickListener);
}
public void submmit(View v){
for (int i = 0; i < adapter.getCheckBoxIDList().size(); i++) {
System.out.println(adapter.getCheckBoxIDList().get(i).toString());
}
Toast.makeText(this, ""+adapter.getCheckBoxIDList().size(), Toast.LENGTH_SHORT).show();
}
public static class MulAdapter extends BaseAdapter{
private Context context;//上下文
private ArrayList<String> list;
private LayoutInflater inflater = null;//导入布局
private boolean[] checks;
public List<String> checkBoxIDList;
public MulAdapter(Context context, ArrayList<String> list) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
checks = new boolean[list.size()];
checkBoxIDList = new ArrayList<String>();
}
public List<String> getCheckBoxIDList() {
return checkBoxIDList;
}
public void setCheckBoxIDList(List<String> checkBoxIDList) {
this.checkBoxIDList = checkBoxIDList;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup arg2) {
final ViewHolder holder;
if (convertView == null) {//当第一次加载ListView控件时 convertView为空
convertView = inflater.inflate(R.layout.group_item_view, null);//所以当ListView控件没有滑动时都会执行这条语句
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
convertView.setTag(holder);//为view设置标签
} else {//取出holder
holder = (ViewHolder) convertView.getTag();//the Object stored in this view as a tag
}
//设置list的textview显示
holder.tv.setTextColor(Color.WHITE);
holder.tv.setText(list.get(position));
// 根据isSelected来设置checkbox的选中状况
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
/*
* b=选中状态
* if b = true 将值添加至checkBoxIDList
* if b = false 将值从checkBoxIDList移除
* */
if (arg1) {
checkBoxIDList.add(holder.cb.getText().toString());
} else {
checkBoxIDList.remove(holder.cb.getText().toString());
}
checks[position] = arg1;
}
});
holder.cb.setChecked(checks[position]);
return convertView;
}
public static class ViewHolder {
TextView tv;
CheckBox cb;
}
}
}
2.布局文件中包含一个水平方向的textView和Checkbox.
- 关于ListView的item中含有checkbox,并判断选中的数目
- listview的item中含有checkbox的一些问题
- 关于listview中checkbox的选中问题
- 关于ListView的Item含有CheckBox所遇到的一些问题
- ListView的Item含有CheckBox时的处理
- Android关于ListView的item中带checkBox的解决方案
- listView的item中含有checkbox的一些问题及解决办法
- 含有CheckBox的ListView
- 如何在含有checkbox的listview条目中获取到选中的条目信息
- ListView中含有CheckBox或者Button等控件,导致item点击无效的原因。
- 关于ListView中checkBox选中状态错乱问题的解决办法
- 关于Android的ListView的Item选中
- 关于ListView+CheckBox,Item超过一屏时数据乱序和不能全部选中的问题
- 关于ListView+CheckBox,Item超过一屏时数据乱序和不能全部选中的问题
- listView的item中有checkbox,重复被选中的问题
- 关于ListView的item中包含Button或Checkbox时导致item无法点击问题
- 关于ListView中加入并选取checkbox错位的问题
- 关于ListView中加入并选取checkbox错位的问题
- 云计算如何运用在政府行业--解决方案
- Linux下安装Nginx
- SQL 备忘录(SQL SERVER)
- SQL的主键和外键约束
- 每天回顾linux命令(reboot)
- 关于ListView的item中含有checkbox,并判断选中的数目
- centos6.x 网卡建立bond
- 一文读懂马云、马化腾、李彦宏、库克等互联网大佬们都在乌镇干了啥
- 【XML】语法规则
- 【论文翻译】Faster R-CNN
- 【java基础】13.I/O:流2
- 语义化版本 2.0.0
- 其实,我只想安静的写写代码...
- Qt之动画效果