Ich habe ein RecyclerView - Grid, mit Drag & Drop, mit diesem code Ich habe es geschafft, zu erreichen, und machte eine Menge Änderungen, nur ein Problem, ich kann nicht speichern die Position der gezogenen Objekte beim Neustart (die App nicht das Telefon). Was ich dachte, ist das Hinzufügen von "int-Position" zu meinem item.java-Konstruktor, aber was ich nicht tun kann, ist die veränderte Position zu bekommen.Halten Sie Drag & Drop-Positionen beim Neustart
Ich benutze die gleichen Drag & Drop-Codes in den Link zur Verfügung gestellt.
ItemTouchHelper.Callback _ithCallback = new ItemTouchHelper.Callback() {
//and in your imlpementaion of
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
// get the viewHolder's and target's positions in your adapter data, swap them
Collections.swap(AllItems, viewHolder.getAdapterPosition(), target.getAdapterPosition());
// and notify the adapter that its dataset has changed
rcAdapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
//TODO
}
//defines the enabled move directions in each state (idle, swiping, dragging).
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
return makeFlag(ItemTouchHelper.ACTION_STATE_DRAG,
ItemTouchHelper.DOWN | ItemTouchHelper.UP | ItemTouchHelper.START | ItemTouchHelper.END);
}
};
Hier ist der Code in onCreate:
ItemTouchHelper ith = new ItemTouchHelper(_ithCallback);
ith.attachToRecyclerView(RcView);
Elemente nach Position duplizierte Schritte zu ändern, Code:
@Override
public void onStop()
{
super.onStop();
SharedPreferencesTools.setOrderedItems(this, AllItems);
}
getAllItemList:
private List<Item> getAllItemList(){
AllItems = SharedPreferencesTools.getOrderedItems(this);
//Add item .. etc
//return items
}
A Bumb auf die Post vielleicht? – Jaeger
Nur zu beachten, die Positionen werden automatisch hinzugefügt, nicht manuell eingestellt. – Jaeger
Habe ich richtig verstanden, dass Sie den "AllItems" -Zustand zwischen den Läufen der App beibehalten wollen, richtig? –