Tôi đang sử dụng recyclerview 22.2.0 và lớp trợ giúp ItemTouchHelper.SimpleCallback để bật tùy chọn vuốt để loại bỏ tùy chọn vào danh sách của tôi. Nhưng khi tôi có một loại tiêu đề trên nó, tôi cần phải vô hiệu hóa hành vi swipe cho vị trí đầu tiên của bộ điều hợp. Như RecyclerView.Adapter không có isEnabled() phương pháp, tôi đã cố gắng để vô hiệu hóa sự tương tác xem qua các phương pháp isEnabled() và isFocusable() trong việc tạo ra ViewHolder chính nó, nhưng đã không thành công. Tôi đã cố điều chỉnh ngưỡng vuốt thành một giá trị đầy đủ, như 0f ot 1f trong phương thức SimpleCallback getSwipeThreshold(), nhưng cũng không thành công.Tắt tính năng vuốt cho vị trí trong RecyclerView sử dụng ItemTouchHelper.SimpleCallback
Một số đoạn mã của tôi để giúp bạn trợ giúp tôi.
Hoạt động của tôi:
@Override
protected void onCreate(Bundle bundle) {
//... initialization
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target) {
return false;
}
@Override
public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof CartAdapter.MyViewHolder) return 1f;
return super.getSwipeThreshold(viewHolder);
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
Và tôi có một bộ chuyển đổi chung với hai loại chế độ xem. Trong ViewHolder mà tôi muốn vô hiệu hóa swiping, tôi đã làm:
public static class MyViewHolder extends RecyclerView.ViewHolder {
public ViewGroup mContainer;
public MyViewHolder(View v) {
super(v);
v.setFocusable(false);
v.setEnabled(false);
mContainer = (ViewGroup) v.findViewById(R.id.container);
}
}
Chính xác những gì tôi đang tìm kiếm! Đặc biệt khi phương pháp này không xuất hiện trên [tài liệu chính thức] (http://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.Callback.html) ... – ptitvinou
@ptitvinou trên 'SimpleCallback' http://developer.android.com/intl/pt-br/reference/android/support/v7/widget/helper/ItemTouchHelper.SimpleCallback.html –
Đáng nói đến: nếu bạn muốn chỉ cho phép một hướng trên một số mặt hàng nhất định, sau đó sử dụng 'vị trí trả về == 0? ItemTouchHelper.LEFT: super.getSwipeDirs (recyclerView, viewHolder); '- cái này tức là chỉ cho phép vuốt trái. –