Ho un RecyclerView - Grid, con trascinamento & rilasciare, utilizzando questo code Sono riuscito a raggiungere questo obiettivo, e apportato molte modifiche, un solo problema, non riesco a salvare la posizione degli oggetti trascinati al riavvio (l'app non è il telefono). Quello che ho pensato è aggiungere "int position" al mio costruttore item.java, ma quello che non posso fare è ottenere la posizione modificata.Mantenere posizione Drag & Dropped posizione al riavvio
Sto utilizzando lo stesso codice di trascinamento & fornito nel collegamento.
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);
}
};
Ecco il codice in onCreate:
ItemTouchHelper ith = new ItemTouchHelper(_ithCallback);
ith.attachToRecyclerView(RcView);
Getting duplicato articoli dopo la posizione che cambiano, Codice:
@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 al post forse? – Jaeger
Giusto per notare, le posizioni vengono aggiunte automaticamente, non impostate manualmente. – Jaeger
Ho corretto correttamente, che si desidera mantenere lo stato di 'AllItems' tra le esecuzioni dell'app, giusto? –