我有一个带有 ListView 的主屏幕小部件(Android 4.x - ICS),经过一些更改,列出的项目没有正确显示 - 我的意思是,显示“旧”数据。它总是这样:
- listview 的可见部分总是显示好的(= 新的)数据
- 列表的不可见部分(向上或向下滚动)总是显示一些旧项目(有些不是)
看起来,列表的不可见部分被缓存了,当我向上或向下滚动时,只有少数项目被刷新,而其他项目则没有。它看起来很有趣,因为当我上下滚动时,有些项目显示旧的,一些新的,而且总是不同的项目,就像绝对随机的一样。很简单很奇怪...
有什么问题?这是我的列表视图:
<ListView
android:id="@+id/panelNews"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_marginLeft="@dimen/padding"
android:layout_marginRight="@dimen/padding"
android:layout_weight="1"
android:gravity="top"
android:paddingTop="@dimen/padding"
android:scrollingCache="false"
android:animationCache="false">
</ListView>
这是我的 MyWidgetServiceFactory 方法的代码(每次数据更改都会触发此方法):
public void onDataSetChanged() {
MyLogger.log(TAG, "onDataSetChanged");
listItems = dbHandler.getRecords(prefHandler);
}
这就是我如何通知 MyWidgetServiceFactory 来自我的 UpdateService 的数据更改:
AppWidgetManager manager = AppWidgetManager.getInstance(this);
int[] appWidgetIds = manager.getAppWidgetIds(new ComponentName(this, MyWidget.class));
manager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.panelNews);