Sto affrontando un problema molto comune: ho impostato un'attività e ora risulta che dovrebbe visualizzare alcuni elementi all'interno di questa ScrollView
. Il modo normale per farlo sarebbe quello di utilizzare l'esistente ListAdapter
, collegarlo a un ListView
e BOOM avrei il mio elenco di elementi.
MA non dovresti inserire un annidato ListView
in un ScrollView
perché rovina lo scorrimento - anche Android Lint se ne lamenta.
Quindi ecco la mia domanda:
Come collego ListAdapter
a a LinearLayout
o qualcosa di simile?
So che questa soluzione non scalerà per molti elementi, ma i miei elenchi sono molto brevi (<10 elementi), quindi il riutilizzo delle visualizzazioni non è realmente necessario. Dal punto di vista delle prestazioni posso convivere posizionando tutte le visualizzazioni direttamente nel file LinearLayout
.
Una soluzione che ho escogitato sarebbe stata quella di posizionare il mio layout di attività esistente nella sezione headerView di ListView
. Ma è come abusare di questo meccanismo, quindi sto cercando una soluzione più pulita.
Idee?
AGGIORNAMENTO: per ispirare la giusta direzione aggiungo un layout di esempio per mostrare il mio problema:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/news_detail_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:visibility="visible">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFF"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/news_detail_layout_side_padding"
android:paddingRight="@dimen/news_detail_layout_side_padding"
android:paddingTop="@dimen/news_detail_layout_vertical_padding"
android:paddingBottom="@dimen/news_detail_layout_vertical_padding"
>
<TextView
android:id="@+id/news_detail_date"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center_horizontal"
android:text="LALALA"
android:textSize="@dimen/news_detail_date_height"
android:textColor="@color/font_black"
/>
<Gallery
android:id="@+id/news_detail_image"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:paddingTop="5dip"
android:paddingBottom="5dip"
/>
<TextView
android:id="@+id/news_detail_headline"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center_horizontal"
android:text="Some awesome headline"
android:textSize="@dimen/news_detail_headline_height"
android:textColor="@color/font_black"
android:paddingTop="@dimen/news_detail_headline_paddingTop"
android:paddingBottom="@dimen/news_detail_headline_paddingBottom"
/>
<TextView
android:id="@+id/news_detail_content"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="Here comes a lot of text so the scrollview is really needed."
android:textSize="@dimen/news_detail_content_height"
android:textColor="@color/font_black"
/>
<!---
HERE I NEED THE LIST OF ITEMS PROVIDED BY THE EXISTING ADAPTER.
They should be positioned at the end of the content, so making the scrollview smaller is not an option.
---->
</LinearLayout>
</ScrollView>
</LinearLayout>
AGGIORNAMENTO 2 Ho cambiato il titolo per renderlo più facile da capire (ho ricevuto un voto negativo, doh!).