私は最初のAndroidアプリケーションを作成していますが、私はGoogle上で答えが見つからない問題があります。Androidどのチェックボックスが選択されているかを知る方法
チェックボックス付きのアイテムのリストが必要です。アイテム自体とチェックボックスの両方をクリック可能にしたい。
public class MyItem extends ListActivity {
private ArrayList<MyItem> items;
public void onCreate(Bundle savedInstanceState) {
/* code which creates instances of MyItem and inserts them on the *list* variable */
MyArrayAdapter adapter = new MyArrayAdapter(this, R.layout.my_item, list);
setListAdapater(adapter);
setContentView(R.layout.items_list);
}
public onListItemClick(ListView l, View v, int position, long id){
//handles the click on an item
}
public class MyArrayAdapter extends ArrayAdapter<MyItem>{
private MyItem item;
public MyArrayAdapter(Context context, int resourceId, ArrayList<MyItem> list){
//code for the constructor
}
public getView(int position, View convertView, ViewGroup parent){
convertView = inflater.inflate(resourceId, null);
this.item = list.get(position);
if (this.item == null) {
return convertView;
}
else{
if (resourceId == R.layout.my_item) {
final CheckBox cb = (CheckBox)convertView.findViewById(R.id.checkbox);
if(cb != null){
//initially
if(chosen)
cb.setChecked(true);
else
cb.setChecked(false);
//set listener
cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if(cb.isChecked())
chosen = true;
else
chosen = false;
}
});
}
}
return convertView;
}
}
}
選択した変数について心配する必要はありません。私はそれを単にコードに書いた。これは実際にはデータベース内の値に対応します。アイテムをクリックするだけでうまくいきます。私は、チェックボックスをクリックしたときしかし、何が起こるかは、このです:
- 私は内部的にチェックされている
- チェックボックスがオンに最後のものである(これはAndroidのUIの仕事である)選択表示されますクリックするチェックボックスつまり、私の画面に8つの項目が表示され、そのうちの1つをクリックすると(どちらの項目でも問題ありません)チェックが正しいチェックボックスに表示されますが、内部的には8番目の項目がチェックされます。
私があなたに提供できるお手伝いをお待ちしております。前もって感謝します。
を試してみてください。 setTag/getTagは、ビューではなくチェックボックスで行う必要がありました。 D: –
あなたが指摘したバグを修正するために更新されました。他の誰かがこのコード全体で発生した場合に備えて、更新されました。 – kabuko