我正在使用Fragments創建聯繫人列表應用程序,其中一個frag是聯繫人列表中的名稱列表,另一個是其餘細節。刷新ArrayAdapter onResume [notifyDataSetChanged()不工作]
這裏是顯示名稱的列表
public class MyListFragment extends ListFragment {
private ContactStorage contactStorage = new ContactStorage();
public final static String TAG = "FRAGMENTS";
private MainActivity parent;
ArrayAdapter<String> adapter;
ArrayList<String> entries = new ArrayList<String>();
String array[];
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.list_layout, null);
parent = (MainActivity) getActivity();
entries = contactStorage.getContactListNames();
adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),
android.R.layout.simple_list_item_1, entries);
setListAdapter(adapter);
Log.d(TAG, "Adapter created");
array = contactStorage.getContactDetails();
return v;
}
@Override
public void onResume() {
super.onResume();
entries = contactStorage.getContactListNames();
adapter.notifyDataSetChanged();
Log.d(TAG, "List Frag Resumed");
}
}
我遇到的問題是,一個ArrayAdapter不會在簡歷刷新類。
當屏幕旋轉時,它的罰款作爲onCreateView()再次運行,但我需要它刷新onResume。我已經看過這個網站的負載,但沒有發現,但「使用notifyDataSetChanged()」不起作用。
好了,你有什麼期待?您正在檢索「條目」,但不會重新構建您的「適配器」。將'entires ='和'adapter ='這兩行從'onCreate()'移動到'onResume()'(你應該只做一次),'onResume()'忘記'entries ='和'notify''你會沒事的。 – 2013-04-25 16:16:11
@ClassStacker - 仍然是同樣的問題。在屏幕旋轉之前不刷新列表。 – RockJake28 2013-04-25 16:19:46
嗯,是的,對不起,你還必須在那裏做setListAdapter()。 – 2013-04-25 16:23:02