1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

ListView in TabActivity aktualisieren

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von nithdi, 03.05.2010.

  1. nithdi, 03.05.2010 #1
    nithdi

    nithdi Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    26.04.2010
    (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

    Beiträge:
    960
    Erhaltene Danke:
    262
    Registriert seit:
    16.11.2009
    Ä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.
     

Diese Seite empfehlen