Come utilizzare notifyDataSetChanged () nel thread

Creo un thread per aggiornare i miei dati e cercare di notifyDataSetChanged al mio ListView.

 private class ReceiverThread extends Thread { @Override public void run() { //up-to-date mAdapter.notifyDataSetChanged(); } 

L'errore si verifica in linea:

  • Perché la mia attività è fuorioutput?
  • android-Come verificare la posizione è in area speciale?
  • Registrazione a tempo limitato Android con intento
  • Differenze tra TextTextChanged di TextWatcher, beforeTextChanged e AfterTextChanged
  • Come hide Seekbar o Progressbar della visualizzazione Video in android
  • IllegalArgumentException: il provider non esiste: null su Maps V1
  •  mAdapter.notifyDataSetChanged(); 

    Errore :

    12-29 16: 44: 39.946: E / AndroidRuntime (9026): android.view.ViewRoot $ CalledFromWrongThreadException: solo il thread originale che ha creato una gerarchia di visualizzazione può toccare le sue viste.

    Come devo modificarlo?

  • Salvataggio di offerte a Google Wallet
  • Come devo superare l'onDraw di VideoView per avere angoli arrotondati trasparenti?
  • NumberFormatException: revisione non valida: 24.0.0-alpha1: revisione non valida: 24.0.0-alpha1
  • Android: gestire il cookie da HTTP Get-Request
  • Comunicazione robusta con più dispositivi BLE simultaneamente su Android
  • Come faccio a collegarmi da un'applicazione gratuita a un'applicazione a pagamento nel mercato Android?
  • 4 Solutions collect form web for “Come utilizzare notifyDataSetChanged () nel thread”

    Utilizzare il metodo runOnUiThread() per eseguire l'azione UI da un thread non UI.

     private class ReceiverThread extends Thread { @Override public void run() { Activity_name.this.runOnUiThread(new Runnable() { @Override public void run() { mAdapter.notifyDataSetChanged(); } }); } 

    Non puoi toccare le visualizzazioni dell'interface utente da altri thread. Per il tuo problema è ansible utilizzare AsyncTask , runOnUiThread o gestore .

    Ti auguro il meglio

    Non è ansible accedere al thread UI da altri thread. È necessario utilizzare il gestore per eseguire questo. È ansible submit un messaggio al gestore all'interno del metodo di esecuzione e aggiornare l'interface utente (call mAdapter.notifyDataSetChanged ()) all'interno del gestore.

    accedere al thread UI da altri thread

    Activity.runOnUiThread (Runnable)

    View.post (Runnable)

    View.postDelayed (Runnable, long)

    il mio approccio che utilizzo altri thread per il lavoro:

     private AbsListView _boundedView; private BasicAdapter _syncAdapter; /** bind view to adapter */ public void bindViewToSearchAdapter(AbsListView view) { _boundedView = view; _boundedView.setAdapter(_syncAdapter); } /** update view on UI Thread */ public void updateBoundedView() { if(_boundedView!=null) { _boundedView.post(new Runnable() { @Override public void run() { if (_syncAdapter != null) { _syncAdapter.notifyDataSetChanged(); } } }); } } 

    btw notifyDatasetChanged () mette il metodo all'object di class DataSetObservable di AbsListView che viene impostato prima coinvolgendo il metodo AbsListView.setAdaptert (Adapter) impostando la richiamata su Adapter.registerDataSetObserver (DataSetObserver);

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.