というわけで、タイトルがほぼすべてを物語っています。データベースからのデータを表示するカスタム カーソル アダプターが取り込まれたリストビューがあります。リストにアイテムを追加するアニメーションは正常に動作しますが、リストからアイテムを削除するアニメーションが機能しません。アニメーションが実行される前に、アイテムがデータベースから削除され、リストが更新されているのではないかと心配しています。この問題を解決するための助けに感謝します。
アニメーション コード
LayoutTransition transition = new LayoutTransition();
Animator appearAnim = ObjectAnimator.ofFloat(null, "rotationX", 90f, 0f)
.setDuration(android.R.integer.config_shortAnimTime);
Animator disappearAnim = ObjectAnimator.ofFloat(null, "alpha", 1f, 0f)
.setDuration(android.R.integer.config_longAnimTime);
transition.setAnimator(LayoutTransition.APPEARING, appearAnim);
transition.setAnimator(LayoutTransition.DISAPPEARING, disappearAnim);
mNotesListView.setLayoutTransition(transition);
メモの削除方法
@Override
public void deleteNote(final String noteId) {
new Thread() {
@Override
public void run() {
super.run();
mNotesTable.deleteNote(mDb, noteId);
int notebookNumber = mNoteBookFragment.getNotebookNumber();
final Cursor cursor = mNotesTable.notesQuery(mDb, notebookNumber);
runOnUiThread(new Runnable() {
@Override
public void run() {
mNoteBookFragment.refreshNoteList(cursor);
Toast.makeText(BlocNotes.this,
getString(R.string.delete_note_toast), Toast.LENGTH_LONG).show();
}
});
}
}.start();
}
リストを更新する
public void refreshNoteList(Cursor cursor) {
mNoteAdapter.changeCursor(cursor);
mNoteAdapter.notifyDataSetChanged();
setNewNoteText(""); //clear the text
}
Edited Refresh メソッド
public void refreshNoteList(Cursor cursor) {
mTransition.removeChild(mNoteAdapter.getParent(), mNoteAdapter.getView());
mNoteAdapter.changeCursor(cursor);
mNoteAdapter.notifyDataSetChanged();
setNewNoteText(""); //clear the text
}