0

約 10 個のリスト アイテムを含む ListView があります。各リスト項目にはチェックボックスがあります。一度にチェックボックスを1つだけオンにしたいと思います。

行 1 を選択すると、残りの 9 つのチェックボックスはすべてオフにする必要があります。

解決策を教えてください。

現在、リストがスクロールされているときにこれに苦労しています

4

2 に答える 2

1

あなたがすべきことは、最後にチェックされたアイテムを追跡することListViewです。このようなもの:onItemClickListenersetChecked(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 に答える