2012-01-11 93 views
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()之後的順序執行。我有:

  1. 列表刷新數據與refreshCategoriesList()(但它不是主要問題);
  2. 的onResume()的執行後滾動到結束列表恢復到第一個項目位置:(這是一個問題,因爲當我添加新的項目我想滾動列表的末尾。

我該如何解決這個問題。我可以在某些情況下只調用onActivityResult(...)方法(當我需要滾動列表)和其他onResume()方法時(當我只是想刷新列表數據)?

+1

每次刷新時都不應該創建新的適配器。你嘗試類似categoriesListAdapter.notifyDataSetChanged()? – 2012-01-11 22:04:37

回答

2

您可以使用notifyDataSetChanged )方法而不是每次重新創建適配器。

private void refreshCategoriesList() { 
    categoriesListAdapter.notifyDataSetChanged(); 
} 
相關問題