我正在製作我的第一個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個項目,並且我點擊了其中一個項目(哪個項目無關緊要),那麼這個支票就出現在正確的複選框中,但是在內部,第8個項目是被檢查的項目。
我希望你能給我提供任何幫助。提前致謝。
它的工作就像一個魅力除了一個細節。 setTag/getTag必須完成而不是視圖,而是複選框。謝謝,非常感謝:D –
已更新,以解決您指出的錯誤,以防萬一其他人發生此代碼。 – kabuko