最近自己在编写有关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的使用,及问题解决相关推荐

  1. android 中自定义安装,Android开发中ListView自定义adapter的封装

    [引入] 我们一般编写listView的时候顺序是这样的: •需要展示的数据集List •为这个数据集编写一个ListView •为这个ListView编写一个Adapter,一般继承自BaseAda ...

  2. Android listView 去掉header和footer中的分割线

    Android listView 去掉header和footer中的分割线 方法一: 在listView中加上android:headerDividersEnabled="false&quo ...

  3. app把信息添加到mysql_如何将数据库表中的数据添加到ListView C#Xamarin Android App

    几天前我问过如何在活动之间共享数据,一个用户告诉我使用SQLite,所以我做了.我想让用户点击MainLayout中的按钮,它会将他重定向到AddTaskLayout,在那里他可以添加任务名称,按下S ...

  4. android listview item按钮,android-listview适配器中的按钮

    任何可以解决我的问题..经过2天的奋斗,我终于获得了70%的产出. Exp:我有listview哪些数据来自服务器.在Listview里面有一些文本,按钮和滚动索引A,BC,D,E,F,G. 问题:按 ...

  5. android中的 listview控件,聊聊Android中的ListView控件

    软硬件环境 Macbook Pro MGX 72 Android Studio 1.3.2 坚果手机 前言 ListView是Android系统中使用非常广泛的一种控件,几乎所有的App都会用到它.它 ...

  6. [Android]ListView的Adapter.getView()方法中延迟加载图片的优化

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4139998.html 举个例子吧,以好友列表为例 ListVi ...

  7. android listview单击,如何在Android中处理ListView单击

    如何在Android中处理ListView单击 如何在ListView上收听点击事件? 这就是我现在拥有的 ListView list = (ListView)findViewById(R.id.Li ...

  8. android listview headerview 分割线,【我的Android进阶之旅】如何去除ListView中Header View、Footer View中的分割线...

    最近的项目中给ListView 加入了一个Header View之后,发现Header View的下方也有了分割线,很难看,UI要求将Header View的分割器去掉,好吧.现在就来说一说如何如何去 ...

  9. Android跨屏拖动item,android中如何实现两个listview中的item可以互相拖拽移位?

    这两天自己baidu+google,简单解决了一些问题,暂且先贴上来. 因为是我的一个作业,所以还有一些按钮的点击事件,大家可以忽略. 这些源码仅仅实现了简单的"将制定控件拖拽到某个区域&q ...

最新文章

  1. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
  2. ML基石_10_LogisticRegression
  3. Microsfot.Web.UI.WebControls.TreeView JavaScript控制方法研究(转)
  4. TensorFlow 笔记4--使用tensorboard
  5. OpenCV: 图像连通域检测的递归算法
  6. Java求数组元素的最大和最小值
  7. jQuery EasyUI API 中文文档 - 组合表格(ComboGrid)
  8. 点计算机没有本地磁盘,快速解决WinPE系统下没有本地磁盘的方法
  9. HEL上清除Oracle10g clusterware的失败安装
  10. python中的pylab_Python数值计算:一 使用Pylab绘图(1)
  11. shell基础之shell相关概念
  12. 探讨【IGE】的源代码【三】。
  13. Python定时任务框架APScheduler详解
  14. 优秀在线答题小程序汇总分享
  15. 【工程/物理光学(一)——光的电磁理论基础】
  16. 安卓pdf阅读器_【软件分享】自用的一款PDF阅读器——悦书PDF阅读器,支持护眼模式、注释涂鸦、PDF转换,功能齐全,界面简洁美观。...
  17. ​Copyright到底是什么意思?
  18. php strpos 编码问题,php-关于strpos的问题。 如何获得第二次出现的字符串?
  19. 【svn】svn的Replacing来历及解决办法
  20. 北鲲云联合珠海中科先进技术研究院推出代算服务

热门文章

  1. DRF_APIView之认证、授权配置
  2. 05-Exception Handling Framework
  3. java常见不可变类_Java语言不可变类的诀窍
  4. 第二次爬虫,更加熟练啦
  5. VirtualKD + VMWare双机调试(失败)
  6. Windows保护模式学习笔记(九)—— 2-9-9-12分页
  7. 进程线程006 Windows线程切换-线程优先级
  8. Windbg新手入坑指南
  9. 【Docker】日常记录
  10. 【Let‘s Encrypt】 too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limit