Android ListView单选CheckBox
来源:互联网 发布:苹果手机游戏推荐 知乎 编辑:程序博客网 时间:2024/05/29 04:56
思路
1触发事件setOnItemClickListener改变CheckBox
2在适配器的getView()里改变CheckBox状态,需要记录选中的CheckBox位置
3适配器提供方法改变CheckBox
4用notifyDataSetChanged启动getView()
实现代码
//适配器public class MyAdapter extends BaseAdapter { // 填充数据的list private ArrayList<Map<String, Object>> list; // 用来控制CheckBox的选中状况 private HashMap<Integer,Boolean> isSelected; // 上下文 private Context context; // 用来导入布局 private LayoutInflater inflater = null; // 构造器 public MyAdapter(ArrayList<Map<String, Object>> list, Context context) { this.context = context; this.list = list; inflater = LayoutInflater.from(context); isSelected = new HashMap<Integer, Boolean>(); // 初始化数据 initDate(); } // 初始化isSelected的数据 private void initDate(){ for(int i=0; i<list.size();i++) { getIsSelected().put(i,false); } } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // 导入布局并赋值给convertview convertView = inflater.inflate(R.layout.item_exchange_self, null); TextView tv_name = (TextView) convertView.findViewById(R.id.exchange_self_name); TextView tv_address = (TextView) convertView.findViewById(R.id.exchange_self_address); TextView tv_date = (TextView) convertView.findViewById(R.id.exchange_self_date); CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.select_address); // 设置list中TextView的显示 tv_name.setText(list.get(position).get("name").toString()); tv_address.setText(list.get(position).get("address").toString()); tv_date.setText(list.get(position).get("workDates").toString()); // 根据isSelected来设置checkbox的选中状况 checkBox.setChecked(getIsSelected().get(position)); return convertView; } public HashMap<Integer,Boolean> getIsSelected() { return isSelected; } public void setIsSelected(int postiton) { initDate(); this.isSelected.put(postiton, true); notifyDataSetChanged(); } }
//ListViewListView exchangeCenters = (ListView) findViewById(R.id.exchange_centers); final MyAdapter myadapter = new MyAdapter(getData(),this); exchangeCenters.setAdapter(myadapter); exchangeCenters.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { myadapter.setIsSelected(position); exchangeCenter = getData().get(position); } });
布局的注意事项
1.CheckBox自身的点击要关闭,添加属性android:clickable=”false”
2.item的总部局需要加android:descendantFocusability=”blocksDescendants”保证ListView点击事件正常
3.ListView属性加android:layout_weight=”1”保证不会覆盖下方的按钮
0 0
- android Listview checkbox 单选
- Android ListView单选CheckBox
- Android学习-ListView+ CheckBox实现单选
- Android ListView带CheckBox实现单选
- android ListView+CheckBox实现单选
- ListView CheckBox 全选,单选
- listview+checkbox实现单选
- Android ListView 使用checkbox 实现 单选、多选操作
- android ListView中Checkbox实现单选,全选,全不选功能
- android开发之listview中放入checkbox实现单选
- Android里ListView里面添加CheckBox实现单选。
- Android 使用CheckBox实现ListView自定义单选
- Android checkBox 在listView 实现单选,并记录保存
- android的listview加checkbox实现单保存checkbox的勾选信息
- ListView 加checkBox实现 单选功能
- ListView与CheckBox组合实现单选
- 用CheckBox实现ListView单选效果
- CheckBox在listview中实现单选
- POJ3268最短路水题
- stm32 io模拟spi通信
- Dictionary
- Spring SpringMVC文件上传错误(二)
- C++ 动态链接库和静态链接库
- Android ListView单选CheckBox
- JavaScript之严格模式 "use strict";
- 屌丝们如何突破屌丝固有的穷人思维!
- ORACLE触发器详解
- leetcode.307. Range Sum Query - Mutable 树状数组
- 用dir命令显示文件的完整路径及分屏显示
- 网易视频云技术分享:HBase - 建表语句解析
- Let Me Count The Ways
- Java序列化与反序列化