gpt4 book ai didi

android - LayoutTransition DISAPPEARING 动画不适用于 Cursor Adapter

转载 作者:行者123 更新时间:2023-11-30 02:31:25 25 4
gpt4 key购买 nike

所以,标题几乎说明了一切。我有一个 ListView ,其中填充了一个显示来自数据库的数据的自定义游标适配器。我有一个用于将项目添加到列表的动画,效果很好,但我无法让用于从列表中删除项目的动画正常工作。我担心该项目正在从数据库中删除,并且在动画有机会执行之前正在刷新列表。感谢您为解决此问题提供的任何帮助。

动画代码

    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

}

编辑刷新方法

 public void refreshNoteList(Cursor cursor) {
mTransition.removeChild(mNoteAdapter.getParent(), mNoteAdapter.getView());
mNoteAdapter.changeCursor(cursor);
mNoteAdapter.notifyDataSetChanged();

setNewNoteText(""); //clear the text

}

最佳答案

我遇到了同样的问题。在刷新 ListView 之前,您应该在 Transition 上调用 removeChild(parentView, childView)。这可能不是最好的方法,但它确实有效。

顺便说一句,我会在这里使用Loader:http://developer.android.com/guide/components/loaders.html

UPD:您需要在动画完成后运行其余代码(否则会被中断)。像这样:

public void refreshNoteList(Cursor cursor) {
transition.removeChild(ListView mNotesListView, View mNotesListView.getChildAt(int position);
new Handler().postDelayed(new Runnable(){
public void run() {
mNoteAdapter.changeCursor(cursor);
mNoteAdapter.notifyDataSetChanged();

setNewNoteText(""); //clear the text
}
}, disappearAnim.getDuration());
}

关于android - LayoutTransition DISAPPEARING 动画不适用于 Cursor Adapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27283033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com