RecyclerView Adapter notifyDataSetChanged stoppt ausgefallene Animation

Ich erstelle eine auf RecyclerView basierende Komponente, mit der der Benutzer Elemente per Drag & Drop neu anordnen kann. Sobald ich mich auf der DragListener-Seite befinde, benötige ich die Position im Adapter, um einen korrekten Verschiebevorgang durchzuführen. Ich habe jedoch nur Zugriff auf die Ansicht. Also hier ist, was ich in der Adapteransicht Bindung mache:

@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
    Track track = mArray.get(position);
    viewHolder.itemView.setTag(R.string.TAG_ITEM_POSITION, position);
}

Scheint es dir richtig zu sein? Denn wenn ich einen Gegenstand wie diesen verschiebe:

public void move(int from, int to){
    Track track = mArray.remove(from);
    mArray.add(to, track);
    notifyItemMoved(from, to);
}

then Positions-Tag ist nicht mehr korrekt, und wenn ich DataSetChanged () benachrichtige, verliere ich die ausgefallene Animation. Irgendein Vorschlag

Antworten auf die Frage(10)

Ihre Antwort auf die Frage