Tôi có một ListView
phần tử trong danh sách chứa TextView và hai Nút khác nhau. Một cái gì đó như thế này:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Với mã này tôi có thể tạo một OnItemClickListener
cho toàn bộ mục:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Tuy nhiên, tôi không muốn toàn bộ mục có thể nhấp được mà chỉ có hai nút của mỗi thành phần danh sách.
Vì vậy, câu hỏi của tôi là, làm cách nào để triển khai onClickListener cho hai nút này với các tham số sau:
int button
(nút nào của phần tử đã được nhấp)int position
(đó là yếu tố trong danh sách mà việc nhấp vào nút xảy ra)
Cập nhật: Tôi tìm thấy một giải pháp như được mô tả trong câu trả lời của tôi dưới đây. Bây giờ tôi có thể nhấp / chạm vào nút thông qua màn hình cảm ứng. Tuy nhiên, tôi không thể tự chọn nó bằng trackball. Nó luôn chọn toàn bộ mục danh sách và từ đó đi thẳng đến mục danh sách tiếp theo bỏ qua các nút, mặc dù tôi đã đặt .setFocusable(true)
và setClickable(true)
cho các nút trong getView()
.
Tôi cũng đã thêm mã này vào bộ điều hợp danh sách tùy chỉnh của mình:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Điều này gây ra rằng không có mục danh sách nào có thể lựa chọn nữa. Nhưng nó không giúp ích gì trong việc lựa chọn các nút lồng nhau.
Bất cứ ai có một ý tưởng?