問題があります。メインのアクティビティには ListView があります。そして、このアクティビティに戻るたびに更新する必要があります。これには onResume() メソッドを使用します。
@Override
protected void onResume() {
super.onResume();
refreshCategoriesList();
}
private void refreshCategoriesList() {
// ...
categoriesListAdapter = new CategoryListItemAdapter(
this, R.layout.category_item,
categories
);
categoriesListView.setAdapter(categoriesListAdapter);
}
ご覧のとおり、ListView のデータを変更するために、ArrayAdapter から拡張されたリフレッシュ アダプターを使用します。
しかし、場合によっては、このリストを最後までスクロールする必要があります。それに新しいアイテムを追加するとき。そして、これには onActivityResult(...) メソッドを使用します。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// ...
refreshCategoriesList();
categoriesListView.setSelection(categoriesListAdapter.getCount() - 1);
}
しかし、私には1つの問題があります。リストに新しいアイテムを追加すると、このメソッドの両方が onActivityResult(...) の順に実行され、その後 onResume() が実行されます。そして、私が持っています:
- refreshCategoriesList() を使用して時間に更新されたリスト データ (ただし、主な問題ではありません)。
- onResume() の実行後、最初のアイテムの位置に復元されたリストの最後までスクロールしました:(問題です。新しいアイテムを追加するときに、リストを最後までスクロールしたいからです。
この問題を解決するにはどうすればよいですか。場合によっては、onActivityResult(...) メソッド (リストをスクロールする必要がある場合) のみを呼び出し、他の onResume() メソッド (単にリスト データを更新する場合) を呼び出すことはできますか?