1

我的应用程序有一个用于通知的滑动抽屉。我已经设法让它像 android 通知一样运行,包括“全部清除”按钮。

单击清除所有按钮时,我的数据库被清除,我的列表适配器被刷新,我的列表适配器被设置为列表。视图更新并且列表被清除。

当我添加滑出动画(就像果冻豆一样)时,我得到了 NullPointerException。当我的适配器设置好后,问题就出现了。如果我注释掉设置适配器,动画运行没有问题。

            // Animation
        int count = drawer_list.getCount();
        for (int i = 0; i < count; i++) {
            View view = drawer_list.getChildAt(i);
            if (view != null) {
                // create an Animation for each item
                Animation animation = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);
                animation.setDuration(300);

                // ensure animation final state is "persistent"
                animation.setFillAfter(true);

                // calculate offset (bottom ones first, like in notification panel)
                animation.setStartOffset(300 * (count - 1 - i));

                // animation listener to execute action code
                if (i == 0) {
                    animation.setAnimationListener(new AnimationListener() {

                        public void onAnimationStart(Animation animation) {
                            // NOT USED

                        }

                        public void onAnimationRepeat(Animation animation) {
                            // NOT USED

                        }

                        public void onAnimationEnd(Animation animation) {

                            // Clear table
                            notifications.flushNotificationTempTable_ActiveOnly();
                            // Update list adapter
                            refreshNotifications();
                            // Close drawer
                            notification_drawer.close();
                        }
                    });
                }

                view.startAnimation(animation);
            }
        }

drawer_list.setAdapter(notificationAdapter);问题出在该行执行时的 refreshNotifications() 方法中。我在整个应用程序中都使用了这种方法和适配器,正如我上面所说,它在没有动画的情况下完美地工作。

4

1 回答 1

0

我能够通过消除动画侦听器并在它之后添加一个延迟的可运行文件来运行我的后期动画代码来解决这个问题。

我无法找到在动画侦听器中设置新适配器(因为我使用了自定义适配器而需要)的方法。如果有人知道如何做到这一点,我想知道。

于 2013-02-26T17:18:02.953 回答