ListView in TabActivity aktualisieren

N

nithdi

Neues Mitglied
0
(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
 
Ä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.
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.021
swa00
swa00
D
Antworten
23
Aufrufe
2.548
Data2006
D
D
Antworten
9
Aufrufe
1.767
jogimuc
J
Zurück
Oben Unten