我有一个包含大约10个列表项的ListView。在每个列表项中,我有一个复选框。我一次只想选中一个复选框。
如果我选择第1行,则应取消选中所有剩余的9个复选框,依此类推。
请建议我一个解决方案。
目前,当滚动列表
时,我正在努力解决这个问题答案 0 :(得分:1)
您应该做的是跟踪上次检查的项目,以及ListView
的{{1}},onItemClickListener
当前项目和setChecked(true);
最后一项;像这样的东西:
setChecked(false);
答案 1 :(得分:0)
private Map<String, Boolean> checkState;
public CustomAdapter(Context context) {
this.checkState = new ArrayList<Boolean>(group_list.length);
}
@Override
public View getView(final int position, View convertView, ViewGroup viewGroup) {
final ViewHolder holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.row_check_box, null);
holder.checkbox = (Button)convertView.findViewById(R.id.checkbox);
if(checkState.containsKey(String.valueOf(position))) {
holder.checkbox.setBackgroundResource(R.drawable.fill_check_button);
holder.checkbox.setTag("0");
}else{
holder.checkbox.setBackgroundResource(R.drawable.unfill_check_button);
holder.checkbox.setTag("1");
}
holder.checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(holder.checkbox.getTag().toString().equals("0")) {
holder.checkbox.setTag("1");
holder.checkbox.setBackgroundResource(R.drawable.fill_check_button);
checkState.put(String.valueOf(position), true);
} else {
holder.checkbox.setTag("0");
holder.checkbox.setBackgroundResource(R.drawable.un_fill_check_button);
checkState.put(String.valueOf(position), false);
}
}
});
}