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);
}
そして、私は2つのビュータイプを持つ共通のアダプターを持っています。スワイプを無効にしたい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);
}
}