我有一個ExpandableListView和ExpandableListAdapter力ExpandableListView更新數據。當我在我的適配器中撥打notifyDataSetChanged()
時,數據不會刷新,直到我摺疊然後展開組。這裏是有問題的代碼。當notifyDataSetChanged被稱爲
首先,我的活動(相關部分)
public class HomeActivity extends ExpandableListActivity {
適配器的建設和列表
homeList = (ExpandableListView)this.findViewById(android.R.id.list);
homeAdapter = new ExpandableHomeAdapter(this, profile.Statements, getItems(itemCount));
homeList.setAdapter(homeAdapter);
homeList.setIndicatorBounds(0,0);
homeList.setOnChildClickListener(this);
homeList.expandGroup(0);
homeList.expandGroup(1);
在該活動中,我有一個事件,活動註冊,讓它知道模型數據(存儲在應用程序控制器中)已經改變。這是事件。
private DataChangedListener dataChanged = new DataChangedListener() {
@Override
public void dataChanged(DataChangedEvent event, ChangeModel changes) {
profile = Controller.getProfile();
for (int x = 0; x < changes.NewItems.length; x++) {
homeAdapter.insertItem(changes.NewItems[x], x);
}
for (int x = 0; x < changes.NewStatements.length; x++) {
homeAdapter.insertStatement(changes.NewStatements[x], x);
}
}
};
再有就是我的適配器
public class ExpandableHomeAdapter extends BaseExpandableListAdapter {
插入方法
public void insertItem(ItemSummary item, int index) {
items.add(index, item);
this.notifyDataSetChanged();
}
使用notifyDataSetChanged()
當我使用多個ArrayAdapter
幫過同樣的方法。但是,現在一切正常,數據實際上已經改變,屏幕不會隨新數據一起更新,直到我(手動)摺疊並隨後展開組。我還沒有嘗試以編程方式摺疊/展開,但我想保存它作爲最後的手段。如何在數據更改時更新視圖?