1

というわけで、タイトルがほぼすべてを物語っています。データベースからのデータを表示するカスタム カーソル アダプターが取り込まれたリストビューがあります。リストにアイテムを追加するアニメーションは正常に動作しますが、リストからアイテムを削除するアニメーションが機能しません。アニメーションが実行される前に、アイテムがデータベースから削除され、リストが更新されているのではないかと心配しています。この問題を解決するための助けに感謝します。

アニメーション コード

    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

    }
4

1 に答える 1