2012-04-15 4 views
0

Ich versuche, den Inhalt einer ListView auf ein Array von TextViews festzulegen.Einstellung ListView Adapter: Nullzeiger Ausnahme

Mit dem, was ich habe zur Zeit ich eine Null-Zeiger-Ausnahme erhalten, obwohl ich glaube, ich würde das tun, was hier vorgeschlagen wird: how do I add items to listview dynamically in android

Hier ist, was ich zur Zeit:

ListView lvSuggestions = (ListView)findViewById(R.id.lvSuggestions); 

ArrayAdapter<TextView> arrayAdapter = new ArrayAdapter<TextView>(this, android.R.layout.simple_list_item_1); 
lvSuggestions.setAdapter(arrayAdapter); 

Aber ich Erhalten Sie die Ausnahme, wenn es den Adapter setzt.

Ich habe versucht, die ArrayList mit TextViews füllen und dann den Adapter mit der vollständigen ArrayList erstellen, aber ich bekomme die gleiche Nullzeiger Ausnahme, wenn ich den Adapter einstellen.

Vielen Dank für jede Hilfe

Antwort

0

Diese

(ListView)findViewById(R.id.lvSuggestions); 

könnte null wenn findViewById kehrt null zurückkehren (kein Element gefunden wird) oder das zurückgegebene Objekt ist nicht vom Typ ListView.

Schützen Sie es mit:

if (lvSuggestions != null) { 
    ArrayAdapter<TextView> arrayAdapter = new ArrayAdapter<TextView>(this, 
     android.R.layout.simple_list_item_1); 
    lvSuggestions.setAdapter(arrayAdapter); 
} 
+0

Während Sie Recht haben, ist es nicht diese Zeile, die die Ausnahme zurückgibt. Es ist das: lvSuggestions.setAdapter (arrayAdapter); –

+0

ja, 'lvVorschläge.setAdapter() 'wird eine NullPointerException auslösen, wenn' lvSuggestions' 'null' ist. – Attila

+0

Ah, ich verstehe. Aber es ist nicht null. Das kann ich im Debuggen sehen. –

1
ArrayAdapter<TextView> arrayAdapter = new ArrayAdapter<TextView>(this, android.R.layout.simple_list_item_1); 

Änderung mit der oben Zeile unter

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1); 

und fügen Sie alle die Zeichenfolge, die Sie anzeigen möchten arrayAdapter wie unten

arrayAdapter.add("string1"); 
arrayAdapter.add("string2"); 
arrayAdapter.add("string3");//so on 
+0

Aber ich will es nicht füllen mit Zeichenfolgen. Kann ich es nicht mit TextViews füllen? –

+0

sogar in textview müssen Sie Text mit Strings setzen –

+0

Ja, ich weiß, ich müsste den Textview Text mit Zeichenfolgen setzen. Aber ich möchte, dass mein ListView ein Array von TextViews enthält, weil ich in der Lage sein möchte, die IDs der TextViews zu setzen. Kann ein ListView mit einer ArrayList vom Typ TextView gefüllt werden? –

0

Vielleicht setzen Sie setContentView nach setAdapter.

es muss so sein:

setContentView (xxx);

// ....

setAdapter (xxx)

Hoffe, es hilft!

Verwandte Themen