0

我有一个包含大约 10 个列表项的 ListView。在每个列表项中,我都有一个复选框。一次,我只想选中一个复选框。

如果我选择第 1 行,则应取消选中其余 9 个复选框,依此类推。

请建议我一个解决方案。

目前,当列表滚动时我正在努力解决这个问题

4

2 回答 2

1

你应该做的是你应该跟踪最后一个检查的项目,并在ListView'sonItemClickListener中,setChecked(true);当前项目和setChecked(false);最后一个; 像这样的东西:

ListView myListView = (ListView)findViewById(/* id of listView */);
CheckBox lastChecked = null;
myListView.setOnItemClickListener(new onItemClickListener(
    @Override
    onItemClick(AdapterView arg0, View childView, int pos) {
        if(lastChecked != null) {
            lastCheckedBox.setChecked(false);
        }
        lastChecked = (CheckBox)((ViewGroup)childView).findViewById(/* id of checkBox */);
        lastChecked.setChecked(true);
    }
));
于 2013-07-20T10:09:23.800 回答
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);
                }
            }
        });
}
于 2013-07-20T12:39:59.193 回答