有问题。在我的主Activity中我有一个ListView。每次我回到此活动时,我都需要刷新它。我使用onResume()方法:
@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()。我有:
如何解决此问题。我可以在某些情况下只调用onActivityResult(...)方法(当我需要滚动列表时)和其他onResume()方法(当我只想刷新列表数据时)吗?
答案 0 :(得分:2)
您可以使用ArrayAdapter中的notifyDataSetChanged()方法,而不是每次都重新创建适配器。
private void refreshCategoriesList() {
categoriesListAdapter.notifyDataSetChanged();
}