android listview 中的checkbox,Android中ListView与CheckBox的使用,及问题解决
最近自己在编写有关SIM卡管理的软件做练习,其中使用到了ListView与CheckBox的的组合,遇到了和大家有同样的问题:
1.选中一个checkbox对应位置的其他checkbox也会被选中
2.选中一个checkbox之后,滑动滚动条,之前选中的checkbox会莫名其妙的取消选中
于是网上搜之,具体的问题所在,网上答得也是很含糊,由于接触android时间不长,
其中的原因我也不是很清楚,不过总的来说代码还是搞定了
写好的代码供大家参考下:
import java.util.HashMap;
import java.util.List;
import com.rice.activity.R;
import com.rice.domain.ViewHolder;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class MyAdapter extends BaseAdapter
{
private Context context;
private
List
Object>> data;
//用来记录所有ListView记录对应checkbox的状态
public HashMap
Boolean> isSelected;
private int resource;
private int to[];
private String from[];
private LayoutInflater inflater = null;
private ViewHolder holder = null;
//构造函数
public MyAdapter(Context context,
List
Object>> data, int resource, String
from[], int to[])
{
this.context = context;
this.data = data;
this.resource = resource;
this.from = new
String[from.length];
this.to = new
int[to.length];
System.arraycopy(from, 0,
this.from, 0, from.length);
System.arraycopy(to, 0,
this.to, 0, to.length);
init();
}
public HashMap
Boolean> getIsSelected()
{
return isSelected;
}
//初始化设置所有checkbox都为未选择状态
private void init()
{
isSelected = new
HashMap();
for (int i = 0; i
< data.size(); i++)
{
isSelected.put(i,
false);
}
}
@Override
public int getCount()
{
return data.size();
}
@Override
public Object getItem(int arg0)
{
return data.get(arg0);
}
@Override
public long getItemId(int arg0)
{
return 0;
}
@Override
public View getView(final int position, View
view, ViewGroup arg2)
{
holder = null;
if(null == holder)
{
//总是新建一个ViewHolder对象,用来保存每一个listview条目的信息
holder = new
ViewHolder();
if(null ==
view)
{
inflater
= LayoutInflater.from(context);
view
= inflater.inflate(resource, null);
}
holder.name =
(TextView) view.findViewById(R.id.name);
holder.mobile
= (TextView) view.findViewById(R.id.mobile);
holder.checkBox
= (CheckBox) view.findViewById(R.id.item_checkBox);
}
HashMap
Object> map = data.get(position);
if(null != map)
{
String name =
(String) map.get("name");
String mobile
= (String) map.get("mobile");
holder.name.setText(name);
holder.mobile.setText(mobile);
}
//添加checkBox监听
holder.checkBox.setOnCheckedChangeListener(new
OnCheckedChangeListener()
{
@Override
public void
onCheckedChanged(CompoundButton arg0, boolean isCheck)
{
if(isCheck)
{
isSelected.put(position,
true);
//System.out.println("add
checked=" + position);
}
else
if(!isCheck)
{
isSelected.put(position,
false);
//System.out.println("remove
checked=" + position);
}
}
});
//根据isSelected中记录的信息,设置checkbox的状态
holder.checkBox.setChecked(isSelected.get(position));
return view;
}
}
android listview 中的checkbox,Android中ListView与CheckBox的使用,及问题解决相关推荐
- android 中自定义安装,Android开发中ListView自定义adapter的封装
[引入] 我们一般编写listView的时候顺序是这样的: •需要展示的数据集List •为这个数据集编写一个ListView •为这个ListView编写一个Adapter,一般继承自BaseAda ...
- Android listView 去掉header和footer中的分割线
Android listView 去掉header和footer中的分割线 方法一: 在listView中加上android:headerDividersEnabled="false&quo ...
- app把信息添加到mysql_如何将数据库表中的数据添加到ListView C#Xamarin Android App
几天前我问过如何在活动之间共享数据,一个用户告诉我使用SQLite,所以我做了.我想让用户点击MainLayout中的按钮,它会将他重定向到AddTaskLayout,在那里他可以添加任务名称,按下S ...
- android listview item按钮,android-listview适配器中的按钮
任何可以解决我的问题..经过2天的奋斗,我终于获得了70%的产出. Exp:我有listview哪些数据来自服务器.在Listview里面有一些文本,按钮和滚动索引A,BC,D,E,F,G. 问题:按 ...
- android中的 listview控件,聊聊Android中的ListView控件
软硬件环境 Macbook Pro MGX 72 Android Studio 1.3.2 坚果手机 前言 ListView是Android系统中使用非常广泛的一种控件,几乎所有的App都会用到它.它 ...
- [Android]ListView的Adapter.getView()方法中延迟加载图片的优化
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4139998.html 举个例子吧,以好友列表为例 ListVi ...
- android listview单击,如何在Android中处理ListView单击
如何在Android中处理ListView单击 如何在ListView上收听点击事件? 这就是我现在拥有的 ListView list = (ListView)findViewById(R.id.Li ...
- android listview headerview 分割线,【我的Android进阶之旅】如何去除ListView中Header View、Footer View中的分割线...
最近的项目中给ListView 加入了一个Header View之后,发现Header View的下方也有了分割线,很难看,UI要求将Header View的分割器去掉,好吧.现在就来说一说如何如何去 ...
- Android跨屏拖动item,android中如何实现两个listview中的item可以互相拖拽移位?
这两天自己baidu+google,简单解决了一些问题,暂且先贴上来. 因为是我的一个作业,所以还有一些按钮的点击事件,大家可以忽略. 这些源码仅仅实现了简单的"将制定控件拖拽到某个区域&q ...
最新文章
- .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
- ML基石_10_LogisticRegression
- Microsfot.Web.UI.WebControls.TreeView JavaScript控制方法研究(转)
- TensorFlow 笔记4--使用tensorboard
- OpenCV: 图像连通域检测的递归算法
- Java求数组元素的最大和最小值
- jQuery EasyUI API 中文文档 - 组合表格(ComboGrid)
- 点计算机没有本地磁盘,快速解决WinPE系统下没有本地磁盘的方法
- HEL上清除Oracle10g clusterware的失败安装
- python中的pylab_Python数值计算:一 使用Pylab绘图(1)
- shell基础之shell相关概念
- 探讨【IGE】的源代码【三】。
- Python定时任务框架APScheduler详解
- 优秀在线答题小程序汇总分享
- 【工程/物理光学(一)——光的电磁理论基础】
- 安卓pdf阅读器_【软件分享】自用的一款PDF阅读器——悦书PDF阅读器,支持护眼模式、注释涂鸦、PDF转换,功能齐全,界面简洁美观。...
- ​Copyright到底是什么意思?
- php strpos 编码问题,php-关于strpos的问题。 如何获得第二次出现的字符串?
- 【svn】svn的Replacing来历及解决办法
- 北鲲云联合珠海中科先进技术研究院推出代算服务
热门文章
- DRF_APIView之认证、授权配置
- 05-Exception Handling Framework
- java常见不可变类_Java语言不可变类的诀窍
- 第二次爬虫,更加熟练啦
- VirtualKD + VMWare双机调试(失败)
- Windows保护模式学习笔记(九)—— 2-9-9-12分页
- 进程线程006 Windows线程切换-线程优先级
- Windbg新手入坑指南
- 【Docker】日常记录
- 【Let‘s Encrypt】 too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limit