【发布时间】:2010-11-18 14:05:43
【问题描述】:
很抱歉让人们感到困惑。我简化了问题,即复选框。基本上我想要一个这样的列表视图,我希望在单击时切换复选框。
[文本视图][复选框]
[文本视图][复选框]
[文本视图][复选框]
[文本视图][复选框]
问题是复选框无法正常工作。当我点击一个复选框时,它永远不会被切换。
谁能给点建议?谢谢。
这是我现在的代码:
public class MyAdapter extends SimpleAdapter {
Map<Integer, Boolean> map;
LayoutInflater mInflater;
private List<? extends Map<String, ?>> mList;
public MyAdapter(Context context, List<Map<String, String>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
map = new HashMap<Integer, Boolean>();
mInflater = LayoutInflater.from(context);
mList = data;
for (int i = 0; i < data.size(); i++) {
map.put(i, false);
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.rapid_diagnosis_row, null);
}
TextView textView = (TextView) convertView.findViewById(R.id.multiple_question);
textView.setText((String) mList.get(position).get("value"));
CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.multiple_checkbox);
checkBox.setChecked(map.get(position));
// save position and checking status into tag
checkBox.setTag(new int[] { position, checkBox.isChecked() == true ? 1 : 0 });
checkBox.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// get position and checking status from tag, works fine
int[] tag = (int[]) (v.getTag());
int p = tag[0];
int c = tag[1];
// try to get checking status from the clicked view, not works
// which is always true
boolean checked = ((CheckBox) v).isChecked();
// try to toggle the clicked (checkbox) view, not works
// the checkbox pressed never be toggled
((CheckBox) v).toggle();
// save status into a hashmap, works fine
mSimpleAdapter.map.put(p, (c == 1 ? true : false));
}
});
return convertView;
}
【问题讨论】:
-
“复选框无法正常工作。”,究竟发生了什么??????
-
你的目的是什么?您只想选中复选框还是只想检索另一个 Activity 或 Intent 上的复选框的值?
-
谢谢你们,我想点击复选框并检查它。
-
我在 MyAdapter 和 checkBox.setOnClickListener(this) 上实现了 OnClickListener。然后我添加了 public void onClick(View v) { boolean checked = ((CheckBox) v).isChecked(); ((复选框) v).toggle(); } 仍然是同样的问题