首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在由CursorAdapter & CursorLoader填充的ListView中生成删除/Insertion操作的动画?

如何在由CursorAdapter & CursorLoader填充的ListView中生成删除/Insertion操作的动画?
EN

Stack Overflow用户
提问于 2018-12-30 00:15:48
回答 1查看 33关注 0票数 0

我是一个Android开发的初学者。我在我的应用程序中使用了一个ListView,它是在CursorAdapter的帮助下由SQLite数据库填充的。我在notifyChange中使用CursorLoader

现在,当我在数据库中删除或插入新数据时,ListView会用新数据实时更新。但我想为删除和插入项目添加动画。

在使用ArraylistAdapter - DevBytes -> https://www.youtube.com/watch?v=YCHNAi9kJI4 (DevBytes Code)时,我能够找到删除动画

但是如何在使用CursorAdapter时应用动画

EN

回答 1

Stack Overflow用户

发布于 2018-12-30 01:23:58

我也是一个初学者,但是对于插入操作,当列表第一次加载时,你必须在oncreate()方法中添加动画。在此处输入代码

代码语言:javascript
复制
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ListView lv = (ListView) findViewById(R.id.listView);

    List<ItemDetail> itemList = createItems(50);

    // Load animation
    final Animation anim = AnimationUtils.loadAnimation(this, R.anim.fade_anim);

    // Find ListView to populate
       ListView lv = (ListView) findViewById(R.id.lvItems);
     // Setup cursor adapter using cursor from last step
       TodoCursorAdapter todoAdapter = new TodoCursorAdapter(this, todoCursor);
    // Attach cursor adapter to the ListView 
       lv.setAdapter(todoAdapter);

    lv.setAdapter(aAdpt);

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, final View view, final int position,
                long id) {

            anim.setAnimationListener(new Animation.AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {

                    view.setHasTransientState(true);
                }

                @Override
                public void onAnimationRepeat(Animation animation) {


                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    ItemDetail item = aAdpt.getItem(position);
                    aAdpt.remove(item);
                    view.setHasTransientState(false);
                }
            });
            view.startAnimation(anim);
        }
    });

}


private List<ItemDetail> createItems(int size) {
    List<ItemDetail> result = new ArrayList<ItemDetail>();
    for (int i=0; i < size; i++) {
        ItemDetail item = new ItemDetail(i, "Item " + i);
        result.add(item);
    }

    return result;
}

对于动画,您必须在res/anim文件夹下创建动画文件(xyz.xml)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53971199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档