我正在嘗試保留上次滾動的位置,並使用新數據填充適配器,但滾動位置相同。在我的scenerio中,我每5秒更新一次可擴展列表視圖,並且更新新項目的時間爲5秒,但用戶留下最後一個滾動位置。expandablelist視圖滾動位置
我已經搜索了很多關於它,發現很少的解決方案,但它仍然表現出strangly每次我設置滾動位置。
我想用這種方法
activity.runOnUiThread(new Runnable()
{
@Override public void run() {
state = list.onSaveInstanceState();
if(settings != null) {
if (mode.equals("Now")) {
info_panel = new esInfoListAdapter(activity, data, expanHash, false, esActivity.lastgrpPosition);
}
else {
info_panel = new esInfoListAdapter(Activity.this, data, tchildData, true, lastgrpPosition);
}
}
list.setAdapter(info_panel);
if(state != null)
list.onRestoreInstanceState(state);
info_panel.notifyDataSetChanged();
}
}
});
所以這個方法被剛剛我在每五秒鐘更新擴張listview.So總之之前調用來實現它。我使用Parceable對象來保存list.onSaveInstanceState();然後使用list.onRestoreInstanceState(state);更新新的數據
時,但問題是有時工作,有時not..Am這裏我錯過了一些技巧...
你爲什麼要給你的適配器調用信息面板?這會導致代碼不可讀。如果您設置了新的適配器,則不需要notifyDatasetChanged。爲什麼你不保存滾動位置並在之後恢復? – greenapps 2015-03-25 09:39:25
但我怎樣才能保存點的滾動位置,我打電話給info_panal,因爲我在我的活動中有不同的面板... – user3290805 2015-03-25 09:43:27
您將滾動位置放在變量中並再次使用。我不瞭解你的不同面板,但如果它們都是適配器,那麼將它們稱爲所有適配器。 – greenapps 2015-03-25 09:49:32