Имейте проблему. В моей основной деятельности у меня есть ListView. И мне нужно обновить его в любое время, когда я вернусь к этой Деятельности. Я использую метод onResume() для этого:Активность Android 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() (когда я просто хочу обновить данные списка)?
Вы не должны создавать новый адаптер при каждом обновлении. Что вы пытаетесь что-то вроде категорийListAdapter.notifyDataSetChanged()? –