Ich habe eine Liste erstellt RecyclerView
verwendet, die eine Drag-and-Drop hat feature.List ist als untenRecyclerView Drag & Drop-Position nicht funktioniert android
Liste
Liste Artikel 1
Liste Punkt 2
Liste Artikel 3
Wenn der Benutzer Listenelement 3 in die Position der Liste Punkt 1, die Liste wird aktualisiert, wenn das ite ziehen m 3 ist in der Nähe zur Liste Punkt 2. Daraus ergibt sich die Liste aktualisiert wird, wie unten
Liste
Liste Artikel 1
Liste Artikel 3
Liste Artikel 2
Die Adapterklasse für Das obige Szenario:
public class VehicleAdapter extends RecyclerView.Adapter<ViewHolder> implements ItemTouchHelperAdapter {
private VehicleInfoBean mVehicleInfoBean;
private Context ctx;
private HashMap<Integer, Boolean> expandedMap;
private int indexOfSwipe;
private LayoutInflater inflater;
private final int row1 = 0, rowrest = 1;
private RecyclerView recyclerView;
private ItemTouchHelper mItemTouchHelper;
public VehicleAdapter(VehicleInfoBean vehicleInfoObj, Context ctx, RecyclerView recyclerView) {
this.bean = vehicleInfoObj;
this.ctx = ctx;
inflater = LayoutInflater.from(ctx);
ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(this);
mItemTouchHelper = new ItemTouchHelper(callback);
this.recyclerView = recyclerView;
mItemTouchHelper.attachToRecyclerView(recyclerView);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v;
ViewHolder viewHolder;
v = inflater.inflate(R.layout.card_odometer, parent, false);
viewHolder = new OdometerViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
FCALog.d("adapter -- onBindViewHolder ---- " + position);
VehicleInfoViewHolder vehicleInfoViewHolder = (VehicleInfoViewHolder) holder;
vehicleInfoViewHolder.getIvDragItem().setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) {
mItemTouchHelper.startDrag(holder);
}
return false;
}
});
}
@Override
public int getItemCount() {
return bean.getInfoBeanHashMap().size();
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public void onItemMove(int fromPosition, int toPosition) {
Collections.swap(bean.getSequence(), fromPosition, toPosition);
notifyItemMoved(fromPosition, toPosition);
}
@Override
public void onItemDismiss(int position) {
}
}
Lassen Sie mich wissen, wenn Sie ähnlich konfrontiert Ausgabe mit Drag & Drop-Position in RecyclerView
.
habe die Lösung für das obige Sol. Die getItemViewType() gab keine Viewtyp-Instanz zurück. – sharry