Tôi đang tạo ứng dụng Android đầu tiên của mình và tôi đang gặp sự cố mà tôi không thể tìm thấy câu trả lời ở bất cứ đâu trên Google.Android Cách biết hộp kiểm nào được chọn
Tôi muốn danh sách các mục có hộp kiểm. Tôi muốn cả chính mục đó và hộp kiểm có thể nhấp được.
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;
}
}
}
Đừng lo lắng về biến đã chọn. Tôi viết rằng chỉ đơn giản là mã. Nó thực sự tương ứng với một giá trị trong cơ sở dữ liệu. Việc nhấp vào một mục hoạt động tốt. Tuy nhiên khi tôi bấm vào một ô trống những gì xảy ra là thế này:
- hộp kiểm trong đó tôi nhấp xuất hiện chọn (đây là công việc của giao diện người dùng của Android)
- hộp kiểm mà trong nội bộ sẽ được kiểm tra là người cuối cùng trên màn hình bất cứ điều gì, nghĩa là nếu màn hình của tôi hiển thị 8 mục và tôi nhấp vào một trong số chúng (không quan trọng cái nào), thì dấu kiểm xuất hiện trong hộp kiểm chính xác nhưng nội bộ, mục thứ 8 là mục được chọn.
Tôi sẽ đánh giá cao bất kỳ trợ giúp nào bạn có thể cung cấp cho tôi. Cảm ơn trước.
Nó làm việc như một nét duyên dáng ngoại trừ một chi tiết. SetTag/getTag phải được thực hiện không để xem nhưng để hộp kiểm. Cảm ơn bạn, cảm ơn bạn rất nhiều: D –
Đã cập nhật để khắc phục lỗi mà bạn đã chỉ ra, chỉ trong trường hợp bất kỳ ai khác xảy ra trên mã này. – kabuko