Tôi có một ListView thông thường là singleChoice
choiceMode
. Khi người dùng nhấn lâu vào một mục, tôi muốn nhập một chế độ hành động cho phép chọn nhiều mục để họ có thể thực hiện một hành động trên bất kỳ mục nào đã chọn.Thay đổi ListView choiceMode từ singleChoice thành multipleChoiceModal
Tôi có thể định cấu hình ListView
sao cho ở chế độ singleChoice
và người dùng có thể chọn mục danh sách để hiển thị đoạn chi tiết bên cạnh và tự hiển thị mục danh sách ở trạng thái được kích hoạt.
Tôi cũng có thể cấu hình các ListView
để nó trong multipleChoiceModal
choiceMode
và thực hiện một nền báo chí dài trên một mục khởi động chế độ hoạt động và cho phép nhiều lựa chọn, nhưng bây giờ ListView sẽ không cho phép một sự lựa chọn duy nhất trong bình thường chế độ (không có chế độ hành động).
Làm cách nào để có một ListView ở chế độ singleChoice
và sau đó chuyển sang chế độ multipleChoiceModal
khi một mục được nhấn lâu?
này là gần nhất tôi đã có thể đưa ra:
- thiết lập các ListView sang chế độ
singleChoice
- thiết lập các ListView của
OnItemLongClickListener
và người nghe rằng:- thiết lập các ListView của
OnItemLongClickListener
đếnnull
- đặt ListView's
choiceMode
thànhmultipleChoiceModal
- gọi
view.performClick()
trên mặt hàng đã được nhấn lâu.
- thiết lập các ListView của
Phương pháp này có một vài vấn đề.
- Chế độ tác vụ không được bắt đầu cho đến lần thứ hai tôi nhấn lâu vào một mục.
- Khi tôi gọi
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
trongonDestroyActionMode
Tôi nhận đượcjava.lang.StackOverflowError
vì phương pháp đó kết thúc bằng việc cố gắng hủy chế độ tác vụ (nhưng chúng tôi chưa được trả lại từ tiêu hủy).
gì sẽ xảy ra sau khi bạn nhập multipleChoiceMode, chọn 2 và quay trở lại singleCheckMode? – user387184