PDA

Ver la Versión Completa : [ CONSULTA ] Problema con ListView y Scroll de la actividad


ugarte
25/11/12, 23:48:29
Buenas!! Estoy comenzando con el mundo de la programación en android y tengo un problema que ni san google me ha podido solucionar, acudo a vuestra experiencia.
Estoy haciendo una aplicación simple pero para simplificar un poco las cosas os pongo un ejemplo con mi problema:
Me gustaría mostrar en una pantalla una serie de datos (TextView), una lista en medio, luego otra serie de datos(TextView) que se cargarán de una base de datos. El problema que me encuentro es que si la lista es demasiado grande los datos de abajo se ocultan y no hay posibilidad de verlos y que el scroll se pone en la lista y no en la activity. Si pongo scroll en la activity (Con <ScrollView> al principio y al final) me encuentro con que la lista solo me muestra el primer elemento y no aumenta. Como puedo solucionar el problema?

Siento si no me se explicar bien, dejo el código de un ejemplo rápido que he hecho.

main_activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Datos cargados de la base de datos 1" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Datos cargados de la base de datos 2" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Datos cargados de la base de datos 3" />

<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/lstLista"/>


<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Datos cargados de la base de datos 4" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Datos cargados de la base de datos 5" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Datos cargados de la base de datos 6" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Datos cargados de la base de datos 7" />

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<Button
android:id="@+id/btnAceptar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btnCancelar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>/>
</LinearLayout>

</LinearLayout>

MainActivity.java
public class MainActivity extends Activity {



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ListView lstLista = (ListView)findViewById(R.id.lstLista);

String lista[] = new String[20];
for (int i = 0; i < lista.length; i++)
lista[i] = new String("Elemento "+i);


ArrayAdapter <String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lista);

lstLista.setAdapter(adaptador);

}


}

RubenGM85
26/11/12, 15:28:56
No puedes tener un elemento con scroll en un contenedor con scroll en el mismo eje. (Por poder puedes, pero pasa lo que comentas.

¿Estás seguro de que quieres que el usuario no sepa qué se va a mover cuando intente hacer scroll?

Yo lo primero que haría sería convertir ese LinearLayout a RelativeLayout; colocar todo el texto de arriba, luego el de abajo y al final al ListView decirle "below=texto de arriba" y "above=texto de abajo".

ugarte
26/11/12, 15:50:49
Pero de esa manera podria darse el caso de que la lista no se viera si la pantalla es muy pequeña.

Estoy pensando que podría crear textview en tiempo de ejecucion y meterlos en un linearlayout y asi me olvido de poner una lista.

De todas formas me gustaria saber si alguien sabe como crear una lista que tenga dos botones que realicen funciones diferentes para el item seleccionado.

Enviado desde mi LT18i usando Tapatalk 2

RubenGM85
26/11/12, 15:52:19
Si a una row de una lista le añades un botón se dejará de llamar al OnItemClickListener, así que tendrás que asignar OnClickListeners a cada uno de los botones.


¿Puedes colgar una captura de cómo queda ahora mismo ese layout?

ugarte
26/11/12, 20:24:17
Así quedaría de la forma que has dicho, ahora puedo hacer scroll y en la lista y se me ve toda la aplicación, el problema es que si por ejemplo giras la pantalla o la pantalla es mas pequeña pasa esto:
https://www.dropbox.com/s/evwn3yuxu2xg18d/2012-11-26%2018.10.06.png
https://www.dropbox.com/s/fm25w5aewyi7q7y/2012-11-26%2018.10.12.png