我的应用程序有一个用于通知的滑动抽屉。我已经设法让它像 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() 方法中。我在整个应用程序中都使用了这种方法和适配器,正如我上面所说,它在没有动画的情况下完美地工作。