Я пытаюсь выполнить прокрутку для удаления и в ListView
с помощью библиотеки SwipeToDismissUndoList, которая расширяет Образец Roman Nurik SwipeToDismiss.
Моя проблема заключается в анимации удаления. Поскольку ListView
поддерживается CursorAdapter
, анимация запускает обратный вызов onDismiss
в onAnimationEnd
, но это означает, что анимация запущена и reset сама перед обновлениями CursorAdapter
с удалением.
Это выглядит как мерцание для пользователя, где они удаляют заметку, вытаскивая ее, тогда представление возвращается в течение секунды секунды, а затем исчезает, потому что CursorAdapter
выбрал изменение данных.
Вот мой OnDismissCallback
:
private SwipeDismissList.OnDismissCallback dismissCallback =
new SwipeDismissList.OnDismissCallback() {
@Override
public SwipeDismissList.Undoable onDismiss(ListView listView, final int position) {
Cursor c = mAdapter.getCursor();
c.moveToPosition(position);
final int id = c.getInt(Query._ID);
final Item item = Item.findById(getActivity(), id);
if (Log.LOGV) Log.v("Deleting item: " + item);
final ContentResolver cr = getActivity().getContentResolver();
cr.delete(Items.buildItemUri(id), null, null);
mAdapter.notifyDataSetChanged();
return new SwipeDismissList.Undoable() {
public void undo() {
if (Log.LOGV) Log.v("Restoring Item: " + item);
ContentValues cv = new ContentValues();
cv.put(Items._ID, item.getId());
cv.put(Items.ITEM_CONTENT, item.getContent());
cr.insert(Items.CONTENT_URI, cv);
}
};
}
};