Tôi đang sử dụng tái chế 22.2.0 và lớp trợ giúp ItemTouchHelper.SimpleCallback để bật tùy chọn vuốt để loại bỏ cho danh sách của tôi. Nhưng vì tôi có một loại tiêu đề trên đó, tôi cần phải tắt hành vi vuốt cho vị trí đầu tiên của bộ điều hợp. Vì RecyclerView.Adapter không có phương thức isEnabled () , tôi đã cố gắng vô hiệu hóa tương tác chế độ xem thông qua các phương thức isEnabled () và isFocusable () trong chính quá trình tạo ViewHolder, nhưng không thành công. Tôi đã cố gắng điều chỉnh ngưỡng vuốt thành giá trị đầy đủ, chẳng hạn như 0f ot 1f trong phương pháp của SimpleCallback getSwipeThreshold () SimpleCallback , nhưng cũng không thành công.
Mấy đoạn code của mình mong các bạn giúp mình vớ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ộ điều hợp chung với hai loại chế độ xem. Trong ViewHolder mà tôi muốn tắt vuốt, 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);
}
}