安卓Android开发:listView+checkbox的简单实现
来源:互联网 发布:经纬之创网络 编辑:程序博客网 时间:2024/06/05 06:14
安卓Android开发:listView+checkbox的简单实现
项目要用到列表显示并实现每一个条目item的选择。参考网上的listView案例基本上都是在getview处用
holder 作tag来完成的。我用了一下但是在滚动过程中经常出现错乱。holder方案的思路就是只加载显
示部分的数据。这样做的优势是更高效,特别是item数据比较多的情况下。我这里用的方法是在调用数
据表格适配器Adapter时。直接加载全部item,这样listview如何滚动都不会错乱,更可靠。
isChecked, Bitmap bm) {
LayoutInflater inflater = (LayoutInflater) select_report.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// 使用View的对象itemView与R.layout.item关联
View itemView = inflater.inflate(R.layout.item, null);
// 通过findViewById()方法实例R.layout.item内各组件
TextView title = (TextView) itemView.findViewById(R.id.name);
title.setText(strTitle); //填入相应的值
TextView text = (TextView) itemView.findViewById(R.id.time);
text.setText(strText);
TextView con = (TextView) itemView.findViewById(R.id.con);
con.setText(strCon);
ImageView image = (ImageView) itemView.findViewById(R.id.img);
image.setImageBitmap(bm);
CheckBox checkBox = (CheckBox) itemView.findViewById(R.id.checkBox);
checkBox.setChecked(isChecked);
return itemView;
}
return itemViews[position];//itemViews[position]下面要用到。
}
第2个问题来了。如何知道哪些checkbox被勾选了?网上的方法是建一个表和checkbox对应。点击了
checkbox的同时也在表里做记录。要知道哪些被勾选直接查表。这个方法的优点是简单。而我采用直接读
checkbox状态的方法。这种方法我在网络上还没看到,算是原创吧。我的方法的优点是可靠。
要在listview中读取checkbox就要把itemView[]一层一层的掰开找到checkbox。
itemView就是一个ViewGroup。它里面还有ViewGroup。
public void getcb() {
for (int i = 0; i < listView.getCount(); i++) {
ViewGroup vg = (ViewGroup) itemViews[i];
ViewGroup vg1 = (ViewGroup) vg.getChildAt(1);
ViewGroup vg2 = (ViewGroup) vg1.getChildAt(0);
CheckBox cb = (CheckBox) vg2.getChildAt(3);
Log.i("rrrrrr-getcb", i+" "+cb.isChecked());
}
感谢网络上热心共享的人们。人人为我,我为人人。
项目要用到列表显示并实现每一个条目item的选择。参考网上的listView案例基本上都是在getview处用
holder 作tag来完成的。我用了一下但是在滚动过程中经常出现错乱。holder方案的思路就是只加载显
示部分的数据。这样做的优势是更高效,特别是item数据比较多的情况下。我这里用的方法是在调用数
据表格适配器Adapter时。直接加载全部item,这样listview如何滚动都不会错乱,更可靠。
在创建Adapter时循环调用makeItemView然后生成一个itemView[]数组。下面代码是我在网上找的,加工了一下。感谢原创者。
isChecked, Bitmap bm) {
LayoutInflater inflater = (LayoutInflater) select_report.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// 使用View的对象itemView与R.layout.item关联
View itemView = inflater.inflate(R.layout.item, null);
// 通过findViewById()方法实例R.layout.item内各组件
TextView title = (TextView) itemView.findViewById(R.id.name);
title.setText(strTitle); //填入相应的值
TextView text = (TextView) itemView.findViewById(R.id.time);
text.setText(strText);
TextView con = (TextView) itemView.findViewById(R.id.con);
con.setText(strCon);
ImageView image = (ImageView) itemView.findViewById(R.id.img);
image.setImageBitmap(bm);
CheckBox checkBox = (CheckBox) itemView.findViewById(R.id.checkBox);
checkBox.setChecked(isChecked);
return itemView;
}
因为getView不做任何操作。如果你要遍历item。这个效率和holder方法是一样的。
return itemViews[position];//itemViews[position]下面要用到。
}
第2个问题来了。如何知道哪些checkbox被勾选了?网上的方法是建一个表和checkbox对应。点击了
checkbox的同时也在表里做记录。要知道哪些被勾选直接查表。这个方法的优点是简单。而我采用直接读
checkbox状态的方法。这种方法我在网络上还没看到,算是原创吧。我的方法的优点是可靠。
要在listview中读取checkbox就要把itemView[]一层一层的掰开找到checkbox。
itemView就是一个ViewGroup。它里面还有ViewGroup。
public void getcb() {
for (int i = 0; i < listView.getCount(); i++) {
ViewGroup vg = (ViewGroup) itemViews[i];
ViewGroup vg1 = (ViewGroup) vg.getChildAt(1);
ViewGroup vg2 = (ViewGroup) vg1.getChildAt(0);
CheckBox cb = (CheckBox) vg2.getChildAt(3);
Log.i("rrrrrr-getcb", i+" "+cb.isChecked());
}
感谢网络上热心共享的人们。人人为我,我为人人。
0 0
- 安卓Android开发:listView+checkbox的简单实现
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:在ListView实现多选项CheckBox的例子
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android开发:实现带图片和checkbox的listview
- Android checkbox的listview开发实例
- 第五讲、文本编辑器(vim/vi)
- hdu 1558 Segment set 并查集 叉积判断线段是否相交
- 使用androidstudio导入eclipse,IntelliJ等开发的项目
- 查看apk签名,查看key签名,adb常用命令 查看包名
- string类中的find函数
- 安卓Android开发:listView+checkbox的简单实现
- Ubuntu配置jdk以及tomcat
- 五月份的小目标
- SharePoint Framework 在Visual Studio Code中调试你的托管解决方案
- 山科校赛——求个最大值(打表)
- git ssh key创建和github使用
- CentOS7yum安装出现/var/run/yum.pid 已被锁定,解决办法
- Java IO流之内存流
- python学习笔记8.1-异常处理