1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. nithdi, 03.05.2010 #1
    nithdi

    nithdi Threadstarter Neuer Benutzer

    (Guten) Morgen,

    hab n kleines Problem mit einer Liste in einer Tabactivity.
    Beim Klick auf einen Button, wird der Arrayadapter der Liste in einem Thread aktualisiert und dann notifyDataSetChanged() ausgeführt.

    Allerdings aktualisiert sich das ListView nicht.

    Hier mal ein bisschen Code:

    Code:
    // BUTTON CLICK
    //////////////////////////////////////
    final ProgressDialog myProgressDialog = new ProgressDialog(MediaLibrary.this);
                    myProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    myProgressDialog.setMessage("Loading Database...");
                    myProgressDialog.setCancelable(false);
                    myProgressDialog.show();
                    new Thread() {
                       public void run() {
                            try {
    
                              ... (myDB aktualisieren - Daten kommen über Socket)
    
                             [B]printMediaLibrary();[/B]
    
                            } catch (Exception e) { 
                                e.printStackTrace();
                            }
                            // Dismiss the Dialog
                            myProgressDialog.dismiss();
                       }
                  }.start();
                aa.notifyDataSetChanged();
             }
    
    printMediaLibrary:
    Code:
    void printMediaLibrary() {
                 try {
                    myDB = this.openOrCreateDatabase(MY_DATABASE_NAME, MODE_PRIVATE, null);
                    cu = myDB.rawQuery("SELECT DISTINCT Interpret FROM Songs;", null);
                    
                    int ArtistsColumn = cu.getColumnIndex("Interpret");
                    
                    aa = new ArrayAdapter<String>(getApplicationContext(),
                                R.xml.simple_list_item_1);
                    
                    cu.moveToFirst();
                    aa.clear();
                    if (cu != null) {
                      while (cu.moveToNext()) {
                        aa.add(cu.getString(ArtistsColumn));
                        
                      }
                    }
                     artistslist.setAdapter(aa);   
                     cu.close(); 
                    }
                  catch (Exception e) {
                        e.printStackTrace();
                  }
         }
    
    Ich weiß absolut nicht weiter!! Habt ihr ne Idee?

    MfG
     
  2. Mort, 03.05.2010 #2
    Mort

    Mort Android-Lexikon

    Ähm, zunächst mal: Warum rufst du aa.notifyDataSetChanged(); auf, wenn der Thread gerade eben erst gestartet wurde und höchstwahrscheinlich noch parallel läuft? Das sollte doch erst nach printMediaLibrary geschehen, oder?
    Wahrscheinlich gibt es auch Zugriffsprobleme - auf Views darf eigentlich nur der Hauptthread zugreifen. Evtl. musst du mit Handler.post() arbeiten.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Listview mit Datenbank über Custom ArrayList verbinden Android App Entwicklung 22.04.2017
[ERLEDIGT] Drawer mit scrollbarem Listview Android App Entwicklung 27.03.2017
ListView fix am unteren Bildschirmrand ausgeben Android App Entwicklung 01.03.2017
ProgressBar in ListView Android App Entwicklung 03.01.2017
ListView Element an eine Datenbank senden Android App Entwicklung 04.12.2016
ListView Items verknüpfen Android App Entwicklung 06.10.2016
AlertDialog Listview mit ContextMenu Android App Entwicklung 01.10.2016
Android Listview Search Filter Android App Entwicklung 03.09.2016
ListView zeigt letzten Eintrag bei LongClickEvent nicht vollständig an Android App Entwicklung 26.08.2016
Du betrachtest das Thema "ListView in TabActivity aktualisieren" im Forum "Android App Entwicklung",