第1种方法:

首先是我们的bean:

public class Bean {
private boolean isChecked;
private String msg = "这是一条测试数据"; public Bean(){ }
public Bean(boolean isCheched) {
this.isChecked = isCheched;
}
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}

然后在getView的时候判断状态

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder mViewHolder;
if(convertView == null){
convertView = mInfater.inflate(R.layout.list_item, null);
mViewHolder = new ViewHolder(convertView);
convertView.setTag(mViewHolder);
}else{
mViewHolder = (ViewHolder) convertView.getTag();
}
mViewHolder.mTextView.setText(mDatas.get(position).getMsg());
if(mDatas.get(position).isChecked()){//状态选中
mViewHolder.mCheckBox.setChecked(true);
}else{
mViewHolder.mCheckBox.setChecked(false);
}
return convertView;
}

这样我们就能通过bean的状态来控制checkBox的选中与否了,但是onItemCLick的时候的操作才是关键

public class MainActivity extends ActionBarActivity {
private ListView mListView;
private ListAdapter mAdapter;
private List<bean> mDatas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.main_listView);
mDatas = new ArrayList<bean>();
for (int i = ; i < ; i++) {
if(i == ){//默认选中第一个
mDatas.add(new Bean(true));
continue;
}
mDatas.add(new Bean(false));
}
mAdapter = new ListAdapter(this, mDatas);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(mOnItemClickListener);
} private final OnItemClickListener mOnItemClickListener = new OnItemClickListener() { @Override
public void onItemClick(AdapterView<!--?--> adapterView, View view, int position, long arg3) {
for (Bean bean : mDatas) {//全部设为未选中
bean.setChecked(false);
}
mDatas.get(position).setChecked(true);//点击的设为选中
mAdapter.notifyDataSetChanged(); }
};
}

XML

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"> <textview
android:id="@+id/main_list_item_text"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=""
android:gravity="center_vertical"
android:textcolor="@android:color/black"> <checkbox
android:id="@+id/main_list_item_checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginright="10dp"
android:backgroundtintmode="multiply"
android:clickable="false"
android:focusable="false"
android:focusableintouchmode="false"></checkbox>
</textview>
</linearlayout>

Android ListView带CheckBox实现单选的更多相关文章

  1. Android在listview添加checkbox实现单选多选操作问题(转)

    转自:http://yangshen998.iteye.com/blog/1310183 在Android某些开发需求当中,有时候需要在listveiw中加入checkbox实现单选,多选操作.表面上 ...

  2. Android在listview添加checkbox实现单选多选操作问题

    android根据View的不同状态更换不同的背景http://www.eoeandroid.com/thread-198029-1-1.html android 模仿朋友网推出的菜单效果[改进版]h ...

  3. 完美解决Android在listview添加checkbox实现单选多选操作问题

    在Android某些开发需求当中,有时候需要在listveiw中加入checkbox实现单选,多选操作.表面上看上去只是改变checkbox那么简单,然而实际开发中,实现起来并不是那么得心应手.尤其当 ...

  4. android listview 使用checkbox问题

    在android中使用listview时需要了解listview加载数据的原理,为了避免listview由于列表项过多每次需要进行new造成性能低下的问题,android中的listview使用了控件 ...

  5. [置顶] android ListView包含Checkbox滑动时状态改变

    题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...

  6. android ListView中CheckBox错位的解决

    貌似已经非常晚了,可是还是想记下笔记,想让今天完满. 在ListView中加了checkBox,但是发现点击改变其选中状态的时候,发现其位置错乱.状态改变的并非你选中的,百思不得其解.后面通过上网查资 ...

  7. easyui tree带checkbox实现单选

    <ul id="regionTree"></ul> $('#regionTree').tree({ cascadeCheck: false, //onlyL ...

  8. Android 带checkbox的listView 实现多选,全选,反选,删除

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  9. Android 带checkbox的listView 实现多选,全选,反选

    由于listview的一些特性,刚开始写这种需求的功能的时候都会碰到一些问题,重点就是存储每个checkbox的状态值,在这里分享出了完美解决方法:     布局文件: [html]   <?x ...

随机推荐

  1. BZOJ 2708 [Violet 1]木偶 DP

    题意:id=2708">链接 方法: DP 解析: 这题太神辣. 做梦都没想到DP啊,反正我不会. 先谈一个我有过的错的想法. 最小费用最大流? 能匹配的边连费用为1的,不能匹配的连费 ...

  2. python-excel操作之xlrd

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++操作excel文件+++++++++++++++++ ...

  3. c++中重载、重写、覆盖的区别

    Overload(重载):在C++程序中,可以将语义.功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型.顺序不同),即函数重载.(1)相同的范围(在同一个类中):(2)函数名字相同:( ...

  4. 值得学习的html知识

    这里零度为大家推荐几个值得学习的html知识,很有用的哦! 一.打开窗口即最大化 <script language="javaScript"> <!-- Begi ...

  5. 简单说一下 JSON和JSONP

    JSON和JSONP,但从缩写看,可能会以为他们是很相似的两个名词,但他们除了缩写相似外,他们是两种类型的概念. 首先: JSON(JavaScript Object Notation)即JavaSc ...

  6. docker 部署 jenkins server

    1. 拉取一个jenkins 镜像 docker pull jenkins 2. 创建与jenkins配置目录对应的,容器外的,文件目录,并修改相应的权限 mkdir /home/jenkins ch ...

  7. Android网络通信Volley框架源代码浅析(一)

    尊重原创http://blog.csdn.net/yuanzeyao/article/details/25837897 从今天開始,我打算为大家呈现关于Volley框架的源代码分析的文章,Volley ...

  8. 从头认识java-15.7 Map(4)-介绍HashMap的工作原理-hash碰撞(常常作为面试题)

    这一章节我们来讨论一下hash碰撞. 1.什么是hash碰撞? 就是两个对象的key的hashcode是一样的,这个时候怎么get他的value呢? 答案是通过equals遍历table那个位置上面的 ...

  9. poj 1001 java大精度

    import java.io.* ; import java.math.* ; import java.util.* ; import java.text.* ; public class Main ...

  10. screen-Orientation 横竖屏设置

    1.xml中设置,这个主要是在AndroidManifest.xml 中查找activity,然后在里面设置属性,如下 <application android:label="@str ...