Tôi đang tạo một ứng dụng danh sách liên lạc bằng Fragments trong đó một frag là danh sách các tên trong danh sách liên lạc và phần còn lại là các chi tiết còn lại.Refreshing ArrayAdapter onResume [notifyDataSetChanged() không hoạt động]
Đây là lớp học mà sẽ hiển thị danh sách các tên
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");
}
}
Vấn đề tôi đang gặp là ArrayAdapter không làm mới trên sơ yếu lý lịch.
Khi màn hình được xoay, tiền phạt của nó như onCreateView() được chạy lại, nhưng tôi cần nó để làm mới trênResume. Tôi đã nhìn qua trang web này tải và tìm thấy gì, nhưng "sử dụng notifyDataSetChanged()" mà không hoạt động.
Vâng, những gì bạn mong đợi? Bạn đang truy xuất 'mục' nhưng không tạo lại' bộ điều hợp' của mình.Di chuyển hai dòng 'entires =' và 'adapter =' từ 'onCreate()' sang 'onResume()' (bạn chỉ nên làm điều đó một lần), quên về 'entries =' và 'notify' trong' onResume() ' và bạn sẽ ổn thôi. –
@ClassStacker - Vẫn còn vấn đề tương tự. Không làm mới danh sách cho đến khi màn hình được xoay. – RockJake28
Umm có xin lỗi, bạn cũng sẽ phải làm setListAdapter() ở đó. –