Sto creando un'app elenco contatti utilizzando Fragments dove un frag è un elenco di nomi nell'elenco contatti e l'altro è il resto dei dettagli.Refreshing ArrayAdapter onResume [notifyDataSetChanged() non funziona]
Qui è la classe che visualizza l'elenco dei nomi
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");
}
}
Il problema che sto avendo è che l'ArrayAdapter non si aggiorna sul curriculum.
Quando lo schermo viene ruotato, la sua multa come onCreateView() viene eseguita nuovamente, ma è necessario aggiornarla su Riduci. Ho esaminato il carico di questo sito e non ho trovato altro che "use notifyDataSetChanged()" che non funziona.
Beh, cosa vi aspettate? Stai recuperando le 'voci' ma non stai ricostruendo il tuo' adattatore'.Sposta le due righe 'entires =' e 'adapter =' da 'onCreate()' a 'onResume()' (dovresti farlo una sola volta), dimenticati di 'entries =' e 'notify' in' onResume() ' e starai bene. –
@ClassStacker - Ancora lo stesso problema. Non aggiorna l'elenco finché lo schermo non viene ruotato. – RockJake28
Umm sì, mi dispiace, dovrete anche fare il setListAdapter() lì. –