Ich bin neu hier und ein ziemlich neuer Entwickler insgesamt. Ich habe online nach einer Antwort auf mein Problem gesucht, aber es scheint, dass niemand eine solche Anforderung hatte. Vielleicht ist mein Ansatz fehlerhaft. Bitte hilf mir.Kann ich separate ListAdapter für verschiedene TextView-Elemente in einem ListView haben?
Ich möchte ein ListView mit mehreren TextViews, die von drei verschiedenen Datensätzen aufgefüllt werden. Erster TV ist ein Titel des Artikels, zweiter eine Zusammenfassung und dritter eine Referenz. Der einzige Ansatz, den ich mir vorstellen kann, ist drei separate ListAdapter für die separaten TVs, aber wie Sie sich schon vorstellen können, überschreibt jeder nächste ListAdapter den vorherigen. Es sieht so aus, als ob nur ein ListView-Adapter an ein ListView-Layout angehängt werden kann. Ist das richtig? Hier sind Auszüge aus meinem Code.
-Test fest codierte Datenobjekte:
private void createDummyResults() {
ArrayList<SearchResult> searchResults = new ArrayList<SearchResult>();
// die search Array von Search Objekten mit zufälligen Daten hier bevölkert sind, aber ich habe diesen Code der Kürze halber entfernt
String[] searchResultsTitles = new String[searchResults.size()];
String[] searchResultsSummaries = new String[searchResults.size()];
String[] searchResultsReferences = new String[searchResults.size()];
for (int i = 0; i < searchResults.size(); i++) {
searchResultsTitles[i] = searchResults.get(i).getTitle();
searchResultsSummaries[i] = searchResults.get(i).getSummary();
searchResultsReferences[i] = searchResults.get(i).getReference();
}
// this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, searchResultsList));
ArrayAdapter<String> aa1 = new ArrayAdapter<String>(this, R.layout.results, R.id.titlePane, searchResultsTitles);
ArrayAdapter<String> aa2 = new ArrayAdapter<String>(this, R.layout.results, R.id.summaryPane, searchResultsSummaries);
ArrayAdapter<String> aa3 = new ArrayAdapter<String>(this, R.layout.results, R.id.referencePane, searchResultsReferences);
this.setListAdapter(aa1);
this.setListAdapter(aa2);
this.setListAdapter(aa3);
}
XML-Layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFF"
>
<LinearLayout
android:id="@+id/resultPane"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:clickable="true"
android:focusable="true"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:src="@drawable/uk_statute_64"
>
</ImageView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#FFF"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/titlePane"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFF"
android:textColor="#000"
android:textStyle="bold"
android:singleLine="true"
android:text="This is the Title field"
>
</TextView>
<TextView
android:id="@+id/summaryPane"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFF"
android:textColor="#000"
android:singleLine="false"
android:maxLines="2"
android:text="This is the Summary field; it needs to be two lines long."
>
</TextView>
<TextView
android:id="@+id/referencePane"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFF"
android:textColor="#AAA"
android:singleLine="true"
android:text="This is the ref field, eg. 1989 c.46 s.17"
>
</TextView>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
Sorry, meine XML wollte nicht vollständig laden, aber im Grunde in dem Listview-Layout gibt es diese Elemente zu dem der Zeiger in dem Code zu beziehen, die in einem Linearlayout eingewickelt werden: \t \t \t \t \t \t \t \t
TomaszRykala