Problem mit Daten setzen im Listview von Custom dialog

  • Antworten:3
Lucius
  • Forum-Beiträge: 32

08.02.2012, 15:51:39 via Website

Hallo Leute,

Ich habe einen Custom Dialog mit einer Listview.
Die Listview sollte uber einen listadapter (InvoiceAdapater) mit Daten gefuellt werden, das passiert im doInBackground von einer AsyncTask.

1InvoiceResults inv1 = new InvoiceResults(); // ArrayList
2
3for (int i=0; (i!=test.size()) ;i++)
4{
5inv1.setInvDate(test.get(i).text());
6inv1.setInvAmount(invTot.get(i).text());
7invoices.add(inv1);
8}

Ueber ein Menu moechte Ich dann den Dialog anzeigen.
1public boolean onOptionsItemSelected(MenuItem item) {
2// Handle item selection
3switch (item.getItemId()) {
4case R.id.menu_beltegoed:
5MyBeltegoed dialog = new MyBeltegoed (this, new OnReadyListenerBeltegoed());
6
7listviewinvoices = (ListView)dialog.findViewById(R.id.invoicesList);
8listviewinvoices.setAdapter(new InvoiceAdapter(AndroidLogin.this, invoices)); // NullPointer
9dialog.setTitle("Instellingen beltegoed:");
10dialog.show();
11
12return true;
13case R.id.menu_sluit:
14//showHelp();
15return true;
16default:
17return super.onOptionsItemSelected(item);
18}
19}


Jetzt habe Ich das Problem das Ich immer eine NullPointerException bekomme und zwar in unten genannte Zeile:
1listviewinvoices.setAdapter(new InvoiceAdapter(AndroidLogin.this, invoices));

Kann mir bitte Jemand helfen diesen Fehler zu beheben?
Ich vermute ganz stark dass es "AndroidLogin.this" ist, denn "invoices" habe Ich schon kontrolliert auf null.
Danke euch im voraus.

Antworten
Lucius
  • Forum-Beiträge: 32

08.02.2012, 17:21:15 via Website

Habe es schon selber loesen koennen.
Trotsdem Danke.

Antworten
Felix
  • Forum-Beiträge: 259

08.02.2012, 20:21:51 via Website

Tach!

public boolean onOptionsItemSelected(MenuItem item) {

Das deutet darauf hin, dass du dich in einer Activity befindest.

listviewinvoices.setAdapter(new InvoiceAdapter(AndroidLogin.this, invoices)); // NullPointer

Wenn du damit versuchst auf eine andere Activity zuzugreifen, dann ist das nicht zielführend. Man kann einfach nicht davon ausgehen, dass eine bestimmte Activity existiert, weil sie das System inzwischen aufgeräumt haben kann. (Das ist normalerweise essentielles Android-Grundlagenwissen.)

Wenn du allerdings nur einen Kontext übergeben wolltest, dann hätte es auch der von der aktuelle Activity getan, also ein einfaches this.

Ich vermute ganz stark dass es "AndroidLogin.this" ist, denn "invoices" habe Ich schon kontrolliert auf null.

Solche Vermutungen lassen sich mit dem Debugger überprüfen.


Felix.

Antworten
Michael Otto
  • Forum-Beiträge: 2

13.08.2012, 16:31:07 via Website

Lucius
Habe es schon selber loesen koennen.
Trotsdem Danke.

Wie wär es, wenn du deine Lösung allen zur Verfügung stellen würdest?

Antworten