求代码:android listview checkbox 从数据库里读取数据后怎么设置相应的checkbox为选中状态

netboygg 2013-07-23 01:14:43
现在有一个android listview 带checkbox,从数据库里调取相应数据后,绑定到listview 上。
那么怎么将listview 里的checkbox的选择状态与在数据库中记录一一对应?

求给出代码。

我在自定义BaseAdapter类中,getView方法中无法实现。
...全文
255 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
月明皎白 2014-10-08
  • 打赏
  • 举报
回复
我也想知道怎么解决的,郁闷啊
顾小林 2013-07-24
  • 打赏
  • 举报
回复
解决了 也顺便说一下问题么,虽然不好意思,但是为了红花只能厚脸皮让你结贴了
netboygg 2013-07-24
  • 打赏
  • 举报
回复
解决了。。。
顾小林 2013-07-23
  • 打赏
  • 举报
回复
不懂你遍历在干什么
netboygg 2013-07-23
  • 打赏
  • 举报
回复
引用 1 楼 shen332401890 的回复:
这样 你点击的时候 是不是 会获取一个view 通过这个view 获取你那个 checkbox 控件 然后setcheck 吧 就OK了。
我的代码是这样子的:每当遍历完毕的时候,要报错:java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 listData为绑定listview的list,list2为从数据库中查询出来的listview中可能包含的数据项,用listData里的item2与list2中的item0做比较,listData始终大于list2。
// 重写View
			@Override
			public View getView(final int position, View convertView, ViewGroup parent) {
				// TODO Auto-generated method stub
			
				LayoutInflater mInflater = LayoutInflater.from(context);
				convertView = mInflater.inflate(R.layout.listviewitem, null);
				TextView xuhao = (TextView) convertView.findViewById(R.id.item_tv);
				xuhao.setText((String) listData.get(position).get("item0"));
				TextView jibenxinxi = (TextView) convertView.findViewById(R.id.jibenxinxi);
				jibenxinxi.setText((String) listData.get(position).get("item1"));
				TextView id = (TextView) convertView.findViewById(R.id.qnid);
				id.setText((String) listData.get(position).get("item2"));
				CheckBox check = (CheckBox) convertView.findViewById(R.id.qnselect);
				
				
			List<HashMap<String, String>> list2 = new ArrayList<HashMap<String, String>>();
			list2 = new DBUtil().selectlistforguanlihuibi1(Users.useridforcs);
			if (list2.size() == 0) {
				Toast.makeText(manActivity.this, "您没有回避项目!",
						Toast.LENGTH_LONG).show();
			} else {
				for (Map<String, String> m : listData) {
					for (String k : m.keySet()) {
						 System.out.println(k + " : " + m.get(k));
						/*if (k.equals("item2")) {
							System.out.println("已打分列表"
									+ list2.get(position).get("item0")
											.toString());
							System.out.println("整体列表" + m.get(k));
							if (list2.get(position).get("item0").toString()
									.equals(m.get(k))) {

								System.out
										.println("ssssssssssssssssssssssssssssssssssssss");
								check.setChecked(true);
								break;

							}
						}*/
					}
				}
			}
				
				check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
					@Override
					public void onCheckedChanged(CompoundButton buttonView,
							boolean isChecked) {
						

						// TODO Auto-generated method stub
						if (isChecked) {
							state.put(position, isChecked);			
							scount = scount +1;
							tvcount.setText("请选择30位,超出则无效,已经选择"+scount+"位,剩"+(35-scount)+"位");
						} else {
							state.remove(position);		
							scount = scount -1;
							tvcount.setText("请选择30位,超出则无效,已经选择"+scount+"位,剩"+(35-scount)+"位");
						}
					}
				});
				check.setChecked((state.get(position) == null ? false : true));
				return convertView;
			}
k_c_u_f 2013-07-23
  • 打赏
  • 举报
回复
setchecked(true)就可以了
顾小林 2013-07-23
  • 打赏
  • 举报
回复
这样 你点击的时候 是不是 会获取一个view 通过这个view 获取你那个 checkbox 控件 然后setcheck 吧 就OK了。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧