Me enfrento a un problema muy común: diseñé una actividad y ahora resulta que debería mostrar algunos elementos dentro de ella ScrollView
. La forma normal de hacerlo sería usar el existente ListAdapter
, conectarlo a ListView
y BOOM tendría mi lista de elementos.
PERO no debe colocar un anidado ListView
en un ScrollView
ya que arruina el desplazamiento, incluso Android Lint se queja de ello.
Entonces esta es mi pregunta:
¿Cómo conecto un ListAdapter
a un LinearLayout
o algo similar?
Sé que esta solución no se escalará para muchos elementos, pero mis listas son muy cortas (<10 elementos), por lo que no es necesario reutilizar las vistas. En cuanto al rendimiento, puedo vivir colocando todas las vistas directamente en el archivo LinearLayout
.
Una solución que se me ocurrió sería colocar mi diseño de actividad existente en la sección headerView del archivo ListView
. Pero se siente como abusar de este mecanismo, así que estoy buscando una solución más limpia.
Ideas?
ACTUALIZACIÓN: Para inspirar la dirección correcta, agrego un diseño de muestra para mostrar mi 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>
ACTUALIZACIÓN 2 Cambié el título para que sea más fácil de entender (obtuve un voto negativo, ¡doh!).