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