jimu-decompiled/sources/com/chad/library/adapter/base/BaseItemDraggableAdapter.java
2025-05-13 19:24:51 +02:00

239 lines
9.8 KiB
Java

package com.chad.library.adapter.base;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.View;
import androidx.core.view.MotionEventCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.R$id;
import com.chad.library.adapter.base.BaseViewHolder;
import com.chad.library.adapter.base.listener.OnItemDragListener;
import com.chad.library.adapter.base.listener.OnItemSwipeListener;
import java.util.Collections;
import java.util.List;
/* loaded from: classes.dex */
public abstract class BaseItemDraggableAdapter<T, K extends BaseViewHolder> extends BaseQuickAdapter<T, K> {
private static final String ERROR_NOT_SAME_ITEMTOUCHHELPER = "Item drag and item swipe should pass the same ItemTouchHelper";
private static final int NO_TOGGLE_VIEW = 0;
protected boolean itemDragEnabled;
protected boolean itemSwipeEnabled;
protected boolean mDragOnLongPress;
protected ItemTouchHelper mItemTouchHelper;
protected OnItemDragListener mOnItemDragListener;
protected OnItemSwipeListener mOnItemSwipeListener;
protected View.OnLongClickListener mOnToggleViewLongClickListener;
protected View.OnTouchListener mOnToggleViewTouchListener;
protected int mToggleViewId;
public BaseItemDraggableAdapter(List<T> list) {
super(list);
this.mToggleViewId = 0;
this.itemDragEnabled = false;
this.itemSwipeEnabled = false;
this.mDragOnLongPress = true;
}
private boolean inRange(int i) {
return i >= 0 && i < this.mData.size();
}
public void disableDragItem() {
this.itemDragEnabled = false;
this.mItemTouchHelper = null;
}
public void disableSwipeItem() {
this.itemSwipeEnabled = false;
}
public void enableDragItem(ItemTouchHelper itemTouchHelper) {
enableDragItem(itemTouchHelper, 0, true);
}
public void enableSwipeItem() {
this.itemSwipeEnabled = true;
}
public int getViewHolderPosition(RecyclerView.ViewHolder viewHolder) {
return viewHolder.getAdapterPosition() - getHeaderLayoutCount();
}
public boolean isItemDraggable() {
return this.itemDragEnabled;
}
public boolean isItemSwipeEnable() {
return this.itemSwipeEnabled;
}
public void onItemDragEnd(RecyclerView.ViewHolder viewHolder) {
OnItemDragListener onItemDragListener = this.mOnItemDragListener;
if (onItemDragListener == null || !this.itemDragEnabled) {
return;
}
onItemDragListener.onItemDragEnd(viewHolder, getViewHolderPosition(viewHolder));
}
public void onItemDragMoving(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2) {
int viewHolderPosition = getViewHolderPosition(viewHolder);
int viewHolderPosition2 = getViewHolderPosition(viewHolder2);
if (inRange(viewHolderPosition) && inRange(viewHolderPosition2)) {
if (viewHolderPosition < viewHolderPosition2) {
int i = viewHolderPosition;
while (i < viewHolderPosition2) {
int i2 = i + 1;
Collections.swap(this.mData, i, i2);
i = i2;
}
} else {
for (int i3 = viewHolderPosition; i3 > viewHolderPosition2; i3--) {
Collections.swap(this.mData, i3, i3 - 1);
}
}
notifyItemMoved(viewHolder.getAdapterPosition(), viewHolder2.getAdapterPosition());
}
OnItemDragListener onItemDragListener = this.mOnItemDragListener;
if (onItemDragListener == null || !this.itemDragEnabled) {
return;
}
onItemDragListener.onItemDragMoving(viewHolder, viewHolderPosition, viewHolder2, viewHolderPosition2);
}
public void onItemDragStart(RecyclerView.ViewHolder viewHolder) {
OnItemDragListener onItemDragListener = this.mOnItemDragListener;
if (onItemDragListener == null || !this.itemDragEnabled) {
return;
}
onItemDragListener.onItemDragStart(viewHolder, getViewHolderPosition(viewHolder));
}
public void onItemSwipeClear(RecyclerView.ViewHolder viewHolder) {
OnItemSwipeListener onItemSwipeListener = this.mOnItemSwipeListener;
if (onItemSwipeListener == null || !this.itemSwipeEnabled) {
return;
}
onItemSwipeListener.clearView(viewHolder, getViewHolderPosition(viewHolder));
}
public void onItemSwipeStart(RecyclerView.ViewHolder viewHolder) {
OnItemSwipeListener onItemSwipeListener = this.mOnItemSwipeListener;
if (onItemSwipeListener == null || !this.itemSwipeEnabled) {
return;
}
onItemSwipeListener.onItemSwipeStart(viewHolder, getViewHolderPosition(viewHolder));
}
public void onItemSwiped(RecyclerView.ViewHolder viewHolder) {
int viewHolderPosition = getViewHolderPosition(viewHolder);
if (inRange(viewHolderPosition)) {
this.mData.remove(viewHolderPosition);
notifyItemRemoved(viewHolder.getAdapterPosition());
}
OnItemSwipeListener onItemSwipeListener = this.mOnItemSwipeListener;
if (onItemSwipeListener == null || !this.itemSwipeEnabled) {
return;
}
onItemSwipeListener.onItemSwiped(viewHolder, getViewHolderPosition(viewHolder));
}
public void onItemSwiping(Canvas canvas, RecyclerView.ViewHolder viewHolder, float f, float f2, boolean z) {
OnItemSwipeListener onItemSwipeListener = this.mOnItemSwipeListener;
if (onItemSwipeListener == null || !this.itemSwipeEnabled) {
return;
}
onItemSwipeListener.onItemSwipeMoving(canvas, viewHolder, f, f2, z);
}
public void setOnItemDragListener(OnItemDragListener onItemDragListener) {
this.mOnItemDragListener = onItemDragListener;
}
public void setOnItemSwipeListener(OnItemSwipeListener onItemSwipeListener) {
this.mOnItemSwipeListener = onItemSwipeListener;
}
public void setToggleDragOnLongPress(boolean z) {
this.mDragOnLongPress = z;
if (this.mDragOnLongPress) {
this.mOnToggleViewTouchListener = null;
this.mOnToggleViewLongClickListener = new View.OnLongClickListener() { // from class: com.chad.library.adapter.base.BaseItemDraggableAdapter.1
@Override // android.view.View.OnLongClickListener
public boolean onLongClick(View view) {
BaseItemDraggableAdapter baseItemDraggableAdapter = BaseItemDraggableAdapter.this;
ItemTouchHelper itemTouchHelper = baseItemDraggableAdapter.mItemTouchHelper;
if (itemTouchHelper == null || !baseItemDraggableAdapter.itemDragEnabled) {
return true;
}
itemTouchHelper.a((RecyclerView.ViewHolder) view.getTag(R$id.BaseQuickAdapter_viewholder_support));
throw null;
}
};
} else {
this.mOnToggleViewTouchListener = new View.OnTouchListener() { // from class: com.chad.library.adapter.base.BaseItemDraggableAdapter.2
@Override // android.view.View.OnTouchListener
public boolean onTouch(View view, MotionEvent motionEvent) {
if (MotionEventCompat.a(motionEvent) != 0) {
return false;
}
BaseItemDraggableAdapter baseItemDraggableAdapter = BaseItemDraggableAdapter.this;
if (baseItemDraggableAdapter.mDragOnLongPress) {
return false;
}
ItemTouchHelper itemTouchHelper = baseItemDraggableAdapter.mItemTouchHelper;
if (itemTouchHelper == null || !baseItemDraggableAdapter.itemDragEnabled) {
return true;
}
itemTouchHelper.a((RecyclerView.ViewHolder) view.getTag(R$id.BaseQuickAdapter_viewholder_support));
throw null;
}
};
this.mOnToggleViewLongClickListener = null;
}
}
public void setToggleViewId(int i) {
this.mToggleViewId = i;
}
public void enableDragItem(ItemTouchHelper itemTouchHelper, int i, boolean z) {
this.itemDragEnabled = true;
this.mItemTouchHelper = itemTouchHelper;
setToggleViewId(i);
setToggleDragOnLongPress(z);
}
@Override // com.chad.library.adapter.base.BaseQuickAdapter, androidx.recyclerview.widget.RecyclerView.Adapter
public void onBindViewHolder(K k, int i) {
super.onBindViewHolder((BaseItemDraggableAdapter<T, K>) k, i);
int itemViewType = k.getItemViewType();
if (this.mItemTouchHelper == null || !this.itemDragEnabled || itemViewType == 546 || itemViewType == 273 || itemViewType == 1365 || itemViewType == 819) {
return;
}
int i2 = this.mToggleViewId;
if (i2 == 0) {
k.itemView.setTag(R$id.BaseQuickAdapter_viewholder_support, k);
k.itemView.setOnLongClickListener(this.mOnToggleViewLongClickListener);
return;
}
View view = k.getView(i2);
if (view != null) {
view.setTag(R$id.BaseQuickAdapter_viewholder_support, k);
if (this.mDragOnLongPress) {
view.setOnLongClickListener(this.mOnToggleViewLongClickListener);
} else {
view.setOnTouchListener(this.mOnToggleViewTouchListener);
}
}
}
public BaseItemDraggableAdapter(int i, List<T> list) {
super(i, list);
this.mToggleViewId = 0;
this.itemDragEnabled = false;
this.itemSwipeEnabled = false;
this.mDragOnLongPress = true;
}
}