recyclerview 22.2.0 및 도우미 클래스 ItemTouchHelper.SimpleCallback을 사용 하여 내 목록에 대해 스 와이프 하여 닫기 옵션을 활성화 합니다. 그러나 헤더 유형이 있으므로 어댑터의 첫 번째 위치에 대해 스 와이프 동작을 비활성화해야합니다. 으로 RecyclerView.Adapter이 없는 의 IsEnabled () 메소드를 나는 방법을 통해 뷰의 상호 작용을하지 않도록 노력 의 IsEnabled () 및 isFocusable () ViewHolder 생성 자체, 그러나 성공이 없었다. SimpleCallback의 메서드 getSwipeThreshold () 에서 0f ot 1f 와 같이 스 와이프 임계 값을 전체 값으로 조정하려고 했지만 성공하지 못했습니다.
당신이 나를 도울 수 있도록 내 코드의 일부.
내 활동 :
@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);
}
그리고 두 가지 보기 유형 이있는 공통 어댑터가 있습니다. 스 와이프를 비활성화하려는 ViewHolder 에서 다음을 수행 했습니다.
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);
}
}