1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  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.
     

Diese Seite empfehlen