Android adapter.notifyDataSetChanged () funktioniert nicht?

Ich schreibe eine App, die eine Eingabe von dem Benutzer benötigt, übergibt sie an einen Server, der einen JSON-String zurückgibt und dann seinen analysierten Inhalt in einem ListView anzeigt. Ich mache das derzeit durch die Erweiterung von AsyncTask:

//stripped down version public class main extends ListActivity { ArrayList<String> listItems = new ArrayList<String>(); ArrayAdapter<String> adapter; final EditText input = (EditText)findViewById(R.id.input); input.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { if(!input.getText().toString().equals("")) { new GetDataTask().execute(input.getText().toString()); } } }); private class GetDataTask extends AsyncTask<String, Void, ArrayList<String>> { protected ArrayList<String> doInBackground(String... query) { URL url = new URL("http://myserversaddressgoeshere.com/search/thequerygoeshere"); URLConnection conn = url.openConnection(); BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); ArrayList<String> items = new ArrayList<String>(); //the code that parses the JSON goes here; it writes some strings to items return items; } protected void onPostExecute(ArrayList<String> items) { listItems = items; adapter.notifyDataSetChanged(); } } } 

(Dies ist meine erste Post, so dass ich mich im Voraus entschuldigen, wenn mein Versuch, dass ein Code-Block fehlschlägt)

  • Wie füge ich einen zusätzlichen Sprachteingang zu Android hinzu?
  • Google Platz API für Android zu finden Stadt
  • Android Studio macht mein Testmodul abhängig vom Anwendungsmodul
  • Android: Spinner Artikel auf Klick funktioniert nicht, wenn es bereits ausgewählt ist
  • Android Custom URL Scheme weigert sich zu arbeiten / wie man zurück zu Android App nach OAuth navigieren
  • Android: Fehler libGL.so: kann nicht freigegebene Objektdatei öffnen: Keine solche Datei oder Verzeichnis
  • In der onPostExecute-Methode, nach dem Einstellen von listItems gleich den Items, wenn ich den Inhalt von listItems ausdrucke, sind sie genau das, was ich will. Aber aus irgendeinem Grund, wenn es von onPostExecute ausgeführt wird, scheint adapter.notifyDataSetChanged () nichts zu tun (wenn es aus dem Haupt-Thread aufgerufen wird, funktioniert es gut).

    Wenn jemand eine Ahnung hat, was los ist und / oder wie man es beheben kann, würde ich es wirklich schätzen. Vielen Dank!

  • Wo ist proguard-rules.txt im Android-Studio?
  • Zeitstempel zum String-Datum
  • Sync kann nicht ausgeführt werden (onPerformSync wird nicht aufgerufen)
  • "Kann nicht schaffen zuverlässige Verbindung zum Server" Fehler während der Anmeldung mit Google plus
  • SetSelection nicht ändern ListView Position
  • Android Ablage von Service abrufen
  • One Solution collect form web for “Android adapter.notifyDataSetChanged () funktioniert nicht?”

    Kannst du das versuchen

      protected void onPostExecute(ArrayList<String> items) { listItems.clear(); listItems.addAll(items); adapter.notifyDataSetChanged(); } 

    Und ich hoffe du tust dir schon etwas

     adapter = new ArrayAdapter<String>(listItems); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.