2013-03-14 7 views
5

Ich habe eine ListView und kann nicht die Unterelemente auf der Liste anzeigen ... Es zeigt nur das eine oder das andere, aber nicht beide. Wenn ich die Nummer von unten entferne, wird die Zeichenfolge (Titel) angezeigt:ListView Unterelemente und Titel anzeigen

Ich möchte sowohl Elemente und Unterelemente anzeigen.

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    this.loadData(); 

    String []titles_str = titles.toArray(new String[titles.toArray().length]); 
    this.setListAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_2, android.R.id.text1, titles_str)); 

    Number []subtitles_str = lengths.toArray(new Number[lengths.toArray().length]); 
    this.setListAdapter(new ArrayAdapter<Number>(this, 
      android.R.layout.simple_list_item_2, android.R.id.text2, subtitles_str)); 
} 
+0

Sie wollen unter jeder nur "Untertitel" Listenelement oder möchten Sie Unterelemente? – codeMagic

+1

beziehen Sie sich auf Link http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/ Sie werden die Funktionalität verstehen – maddy

+0

Ich möchte Untertitel unter jeder Liste – brodster

Antwort

4

Sie "this.setListAdapter" zweimal verwenden, nur Second "this.setListAdapter" reflektiert.

Für Ihre Anforderung, Bitte verwenden Sie

1)custom arrayadapter<customObject> 
     or 
2)simpleadapter. 

1) individuelle arrayadapter benutzen, überprüfen Sie bitte http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/

2) Mit SimpleAdapter:

List<Map<String, String>> data = new ArrayList<Map<String, String>>(); 
for (int i=0; i<titles_str.length; i++) { 
    Map<String, String> datum = new HashMap<String, String>(2); 
    datum.put("title", titles_str[i]); 
    datum.put("subtitle", String.valueof(subtitles_str[i])); 
    data.add(datum); 
} 
SimpleAdapter adapter = new SimpleAdapter(this, data, 
             android.R.layout.simple_list_item_2, 
             new String[] {"title", "subtitle"}, 
             new int[] {android.R.id.text1, 
               android.R.id.text2}); 
this.setListAdapter(adapter); 
+0

Hey, beachten Sie, dass der 'SimpleAdapter' für statische Daten ausgelegt ist. Wenn die Daten aktualisiert werden müssen. Sie müssen wahrscheinlich einen neuen 'SimpleAdapter' für neu aktualisierten Inhalt neu erstellen. – Yeung

+0

@Yeung - Ja, muss einen neuen SimpleAdapter für neue aktualisierte Inhalte neu erstellen. Oder gehen Sie für jeden anderen Adapter wie ArrayAdapter – Vidyadhar

+0

Wie erhalten Sie diesen Unterpunkt "Titel" -Wert? Wenn Sie beispielsweise auf ein Element in der Listenansicht klicken, möchten Sie den Titel des Unterelements abrufen. – Elshan