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 に答える