我正在使用Fragment创建一个联系人列表应用程序,其中一个碎片显示联系人列表中的名称,另一个碎片显示其余详细信息。
这是显示名称列表的类:
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()",但它并不起作用。
clear()
/addAll()
方法比整体丢弃慢。 - class stacker