2016-02-11 16 views
11

Tôi có RecyclerView với một ItemTouchHelper đang hoạt động. Tất cả mọi thứ hoạt động tuyệt vời, nhưng tôi tự hỏi nếu có một cách tôi có thể tách ItemTouchHelper từ RecyclerView mà không tái tạo danh sách? Cho vui, đây là đoạn code tôi đang sử dụng để đính kèm:Tháo mụcTouchHelper từ RecyclerView

ItemTouchHelper.Callback callback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) 
{ 
    ... 
}; 
mItemTouchHelper = new ItemTouchHelper(callback); 
mItemTouchHelper.attachToRecyclerView(mPasswordList); 

Lý tưởng nhất, tôi muốn kiểm tra một sở thích trong tiếng nói onResume() của Hoạt động RecyclerView này sống trong và tháo ItemTouchHelper dựa trên đó.

Trả lời

11

Động lực ban đầu của tôi cho điều này là cho phép người dùng có khả năng tắt thao tác vuốt trên các mục danh sách nếu họ chọn. Tôi cho rằng cách để làm điều này là tách ItemTouchHelper khỏi RecyclerView. bây giờ tôi đã tìm thấy các ItemTouchHelper.SimpleCallback có phương pháp sau đây có sẵn để ghi đè lên:

@Override 
public boolean isItemViewSwipeEnabled() 
{ 
    return mSwipable; 
} 

Vì vậy, trở về trạng thái đúng ở đây một cách hiệu quả tắt việc xử lý swipe. Tôi hy vọng điều này sẽ giúp một người nào đó trong tương lai.

+3

Bạn tiết kiệm ngày của tôi (..or tuần của tôi). Cảm ơn bạn! –

+0

Giải pháp hoàn hảo! –

12

Bạn có thể tháo ItemTouchHelper từ RecyclerView bằng cách thiết lập recyclerview để null:

mItemTouchHelper.attachToRecyclerView(null); 
+0

Mẹo hay. Tuy nhiên, hãy cẩn thận với giới hạn này: https://issuetracker.google.com/issues/37092256 Google tuyên bố họ sửa lỗi. Tuy nhiên, tại thời điểm nhận xét này được viết, bản sửa lỗi chưa được phát hành cho công chúng. –