2013-02-28 29 views
8

Tôi hiện có một ListView, kích hoạt Phông chữ ActionBar theo ngữ cảnh OnItemLongClickListener của ListView.isItemChecked luôn luôn trả về đối diện của những gì nó được cho là khi bên trong một onItemClickListener?

Tôi đang cố gắng làm cho nó để các mục có thể được lựa chọn bằng cách nhấp vào chúng, nhưng chỉ khi bối cảnh ActionBar tăng lên.

Vấn đề là, khi tôi kiểm tra isItemChecked(), để chuyển trạng thái lựa chọn của mục, nó luôn trả về điều ngược lại với những gì được cho là.

Dưới đây là cách tôi đã thực hiện các OnItemClickListener:

list.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     if (mActionMode != null){ 
      list.setItemChecked(position, !list.isItemChecked(position)); 
     } 
     else{ 
      list.setItemChecked(position, false); 
     } 

    } 

}); 

EDIT: này là khá bizzare .. mã này Toggles lựa chọn trạng thái:

list.setItemChecked(position, list.isItemChecked(position)); 

gì đang xảy ra trên!?

EDIT 2: Ah, có vẻ như android tự động kiểm tra và bỏ chọn từng mục ... có cách nào để thay đổi hành vi này và xử lý bản thân không?

+0

Chúng ta cần hiểu phương thức mActionMode là gì, vì nó đang kích hoạt xem hộp kiểm có nên được kiểm tra hay không. Bạn có thể bao gồm mã cho phương thức 'mActionMode()' không? Cảm ơn. –

Trả lời

1

đây là tài liệu cho setItemChecked phương pháp: Thiết lập nhà nước kiểm tra các vị trí quy định

trong dòng

list.setItemChecked(position, !list.isItemChecked(position)); 

bạn đang thiết một cách rõ ràng để đối lập với những gì isItemChecked lợi nhuận bằng cách phủ nhận secoend arguement trong câu lệnh

Các vấn đề liên quan