android ListView+CheckBox实现单选
2016-09-07 20:45
197 查看
实现思路是用一个list记录每个listview当中每一个item的选中状态,当list中选中与当前选中不一致,将list当中当前位置对应的设为已选,其他位置未选,大概思路是这样的。实现样式:
![](https://img-blog.csdn.net/20160907215714147?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
详细实现可见代码:
demo下载地址
百度云下载链接: https://pan.baidu.com/s/1kULQTKz 密码: r8rb。
代码健壮性可能存在问题,可自行优化。
详细实现可见代码:
package com.example.singlechoose; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; 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; public class MainActivity extends Activity { private ListView listview; private MyAdapter myAdapter; private ArrayList list = new ArrayList() { // listView的内容 { add("item1"); add("item2"); add("item3"); add("item4"); add("item5"); add("item6"); add("item7"); add("item8"); add("item9"); add("item10"); } }; private ArrayList checkList = new ArrayList(); // 判断listview单选位置 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } //设置选中的位置,将其他位置设置为未选 public void checkPosition(int position) { for (int i = 0; i < checkList.size(); i++) { if (position == i) {// 设置已选位置 checkList.set(i, true); } else { checkList.set(i, false); } } myAdapter.notifyDataSetChanged(); } public void init() { listview = (ListView) findViewById(R.id.lsitview); for (int i = 0; i < list.size(); i++) { checkList.add(false); // 均为未选 } myAdapter = new MyAdapter(MainActivity.this, list); listview.setAdapter(myAdapter); } //自定义adapter private class MyAdapter extends BaseAdapter { private LayoutInflater inflater; ArrayList myList; public MyAdapter(Context context, ArrayList myList) { this.inflater = LayoutInflater.from(context); this.myList = myList; } @Override public int getCount() { // TODO Auto-generated method stub return myList.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { Log.i("aaa", "getview"); ViewHolder holder = null; if (convertView == null) { convertView = inflater.inflate(R.layout.layout_item, null); holder = new ViewHolder(); holder.txt = (TextView) convertView.findViewById(R.id.txt); holder.checkBox = (CheckBox) convertView .findViewById(R.id.checkBox); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.txt.setText(myList.get(position)); holder.checkBox.setChecked(checkList.get(position)); holder.checkBox .setOnCheckedChangeListener(new OnCheckedChangeListener() {//单击checkbox实现单选,根据状态变换进行单选设置 @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if (isChecked) { checkPosition(position); } else { checkList.set(position, false);//将已选择的位置设为选择 } } }); convertView.setOnClickListener(new OnClickListener() {//item单击进行单选设置 @Override public void onClick(View v) { // TODO Auto-generated method stub checkPosition(position); } }); return convertView; } public final class ViewHolder { public TextView txt; public CheckBox checkBox; } } }
demo下载地址
百度云下载链接: https://pan.baidu.com/s/1kULQTKz 密码: r8rb。
代码健壮性可能存在问题,可自行优化。
相关文章推荐
- Android在listview添加checkbox实现单选多选操作问题
- 解决Android在listview添加checkbox实现单选多选操作问题
- Android 使用CheckBox实现ListView自定义单选
- Android在listview添加checkbox实现单选多选操作问题
- Android ListView 使用checkbox 实现 单选、多选操作
- Android学习-ListView+ CheckBox实现单选
- Android ListView带CheckBox实现单选
- Android ListView带CheckBox实现单选
- Android在listview添加checkbox实现单选多选操作问题
- Android在listview添加checkbox实现单选多选操作问题
- Android在listview添加checkbox实现单选多选操作问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- Android里ListView里面添加CheckBox实现单选。
- Android在listview添加checkbox实现单选多选操作问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- android开发之listview中放入checkbox实现单选
- Android ListView+CheckBox实现全选、单选
- Android中ListView + CheckBox实现单选、多选效果
- Android checkBox 在listView 实现单选,并记录保存