私はここで新しいです。私は自分の問題に対する答えをオンラインで見てきましたが、誰もそのような要件を持っていなかったようです。おそらく私のアプローチには欠陥があるかもしれない。私を助けてください。ListViewの異なるTextViewアイテムに対して別々のListAdapterを使用できますか?
私は、3つの異なるデータセットによって作成された複数のTextViewでListViewを作成したいと考えています。最初のTVはアイテムのタイトル、2番目のサマリー、3番目のリファレンスです。私が考えることができる唯一のアプローチは、別々のTVのための3つの別々のListAdapterですが、あなたが想像しているように、次のすべてのListAdapterは前のものを上書きします。 1つのListViewアダプタのみをListViewレイアウトにアタッチすることができます。これは正しいです?ここに私のコードのスニペットがあります。
テストハードコーディングされたデータ・オブジェクト:
にsearchResultsオブジェクトのにsearchResultsアレイがランダムなデータでここに取り込まれている、私は簡潔にするため、このコードを削除しました//private void createDummyResults() {
ArrayList<SearchResult> searchResults = new ArrayList<SearchResult>();
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レイアウト:
<?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>
、私のXMLは、フルにロードしたくなかったが、基本的には、リストビューレイアウトのコード内のポインタがに関連すると、これらの要素があり、のLinearLayoutの中に包まれている:\t \t \t \t <のTextView \t \t \tアンドロイド:ID = "@ + ID/summaryPane" \t \t \tアンドロイド:layout_width = "wrap_content" \t \t \tアンドロイド:layout_height = "wrap_content" \t \t \t> \t \t \t \t
TomaszRykala