Chỉnh sửa: OK, tôi đã tìm được giải pháp. Không biết rằng đó là giải pháp thích hợp, nhưng nó hoạt động chính xác. Đã thêm vào mã bên dưới.Trả về giá trị từ nhiều lựa chọn ListView
Tôi đang cố gắng cho phép người dùng chọn một số thư mục từ danh sách kiểm tra và trả lại chúng khi nhấp vào nút "Gửi". Đây là một đoạn mã của tôi. Nó populates ListView với tất cả các thư mục trên/sdcard /, và cho việc lựa chọn ban đầu (tuy nhiên nhiều tôi chọn) khi tôi gửi, nhật ký cho thấy các lựa chọn đúng được trả về. Tuy nhiên, nếu tôi bỏ chọn một mục và nhấp lại vào "Gửi", nó vẫn hiển thị như thể tất cả được chọn. Tôi có cần phải viết một trình xử lý để bỏ chọn một mục không? Tôi nghĩ rằng đã được chăm sóc bởi sự lựa chọn choiceMode? Cảm ơn!
private SparseBooleanArray a;
directoryList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, directoryArray));
submitButton = (Button)findViewById(R.id.submit_button);
submitButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
a = new SparseBooleanArray();
a.clear();
a = directoryList.getCheckedItemPositions();
for (int i = 0; i < a.size(); i++)
{
//added if statement to check for true. The SparseBooleanArray
//seems to maintain the keys for the checked items, but it sets
//the value to false. Adding a boolean check returns the correct result.
if(a.valueAt(i) == true)
Log.v("Returned ", directoryArray[a.keyAt(i)]);
}
}
});
có vẻ như không hiệu quả khủng khiếp để thực hiện vòng lặp và sau đó bên trong vòng lặp for thực hiện một keyAt ... keyAt xấu như thế nào? oh well – JDPeckham
Tôi không hiểu sự khác biệt trong mã này ... nó có vẻ giống như chức năng của tôi. – kcoppock
Oh nevermind, tôi đã bỏ lỡ câu hỏi của bạn. Không có lý do thực sự nào để thực hiện biến lớp cho SBA, tôi chỉ mới sử dụng Java và Android và đã làm điều đó một cách ngu ngốc. :) – kcoppock