2
有問題。在我的主要活動中,我有一個ListView。我需要刷新它,只要我回到這個活動。我使用的onResume()方法是:Android Activity onResume()和onActivityResult()衝突
@Override
protected void onResume() {
super.onResume();
refreshCategoriesList();
}
private void refreshCategoriesList() {
// ...
categoriesListAdapter = new CategoryListItemAdapter(
this, R.layout.category_item,
categories
);
categoriesListView.setAdapter(categoriesListAdapter);
}
正如你可以看到我用清爽適配器從ArrayAdapter延長ListView中不斷變化的數據。
但在某些情況下,我需要滾動此列表到最後,例如。當我添加新的項目。我用onActivityResult(...)方法是:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// ...
refreshCategoriesList();
categoriesListView.setSelection(categoriesListAdapter.getCount() - 1);
}
但我有一個問題。當我將新項目添加到我的列表中時,這兩個方法按照onActivityResult(...)和onResume()之後的順序執行。我有:
- 列表刷新數據與refreshCategoriesList()(但它不是主要問題);
- 的onResume()的執行後滾動到結束列表恢復到第一個項目位置:(這是一個問題,因爲當我添加新的項目我想滾動列表的末尾。
我該如何解決這個問題。我可以在某些情況下只調用onActivityResult(...)方法(當我需要滾動列表)和其他onResume()方法時(當我只是想刷新列表數據)?
每次刷新時都不應該創建新的適配器。你嘗試類似categoriesListAdapter.notifyDataSetChanged()? – 2012-01-11 22:04:37