當用戶關閉一個活動並返回到上一個時,我遇到列表刷新問題。我發現這個問題非常普遍,但我無法解決。Android:從第二個活動返回時在第一個活動中刷新ListView
我重寫的onResume方法:
@Override
public void onResume() {
super.onResume();
populateList();
}
populateList()是我填充的ListView與字符串列表的方法:
arrayAdapter = new CustomArrayAdapter(this, R.layout.symbol_item,list);
listView.setAdapter(arrayAdapter);
的問題是,當次活動被關閉,新項目只是在ListView中再次添加,所以我將每個項目加倍。就像它沒有刷新。
如果我在onResume()中放置了notifyDataSetChanged(),它會引發nullPointerException異常,因爲第一次啓動活動時,第一次啓動活動時沒有適配器初始化。
我不知道該如何處理。
public class testActivity extends Activity {
private int id=1;
private ListView listView;
private CustomArrayAdapter arrayAdapter;
private ArrayList<String> list = new ArrayList<String>();
ArrayList<Item> objectList = new ArrayList<Item>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
@Override
public void onResume() {
super.onResume();
populateList();
}
private void populateList() {
try {
objectList = new GetAsyncTask(id).execute();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int size = objectList.size();
String name;
for (int i = 0; i < size; i++) {
name = objectList.get(i).getName();
list.add(name);
}
arrayAdapter = new CustomArrayAdapter(this, R.layout.symbol_item,
list);
listView.setAdapter(arrayAdapter);
}
}
保持如果'ListView'已經包含字符串控制的一個成員變量。如果是這樣,不要調用'populateList()'。 – Wroclai
問題是與'列表',你如何填充這個? – Sam
@Shelly - 但我需要調用populateList(),即使ListView包含字符串。我正在嘗試刷新它。我不確定我是否瞭解你。 – Cristiano