У меня есть приложение, которое использует переработчик для отображения элементов базы данных. Я хочу переставить элементы, перетаскивая их с помощью itemtouchhelper. Я понял, как это сделать, но не знаю, как обновить базу данных комнаты.
ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT|ItemTouchHelper.DOWN|ItemTouchHelper.UP, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
int dragFrom = -1;
int dragTo = -1;
boolean listChanged = false;
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
int from = viewHolder.getAdapterPosition();
int to = viewHolder1.getAdapterPosition();
if(dragFrom == -1) {
dragFrom = from;
}
dragTo = to;
listChanged = true;
Collections.swap(mGames, from, to);
gameAdapter.notifyItemMoved(from, to);
return true;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
mGames.remove(viewHolder.getAdapterPosition());
Game game = mGames.get(viewHolder.getAdapterPosition());
mGameViewModel.deleteGame(game);
gameAdapter.notifyItemRemoved(viewHolder.getAdapterPosition());
}
@Override
public void onSelectedChanged(@Nullable RecyclerView.ViewHolder viewHolder, int actionState) {
super.onSelectedChanged(viewHolder, actionState);
if(actionState == ItemTouchHelper.ACTION_STATE_IDLE && listChanged){
//update database
listChanged = false;
}
}
});
Например, я перетаскиваю элемент 3 на место 6, затем элемент 4 становится элементом 3, 5 становится 4, а 6 становится 5.
Есть ли специальный метод для этого или мне нужно найти свой собственный?