Cómo conseguir que todos los niños (visibles e invisibles) de un ListView?

Mi problema es similar al de ListView getChildAt devolver null visible para los niños, pero a pesar de que la búsqueda no puedo encontrar una solución.

Tengo un ListView con un pergamino. El ListView tiene 10 elementos, 7 de los cuales son visibles y 3 están ocultos por desplazamiento. También tengo un método externo (fuera de adaptador) que debe llegar a todos los niños de este ListView (por ejemplo, el uso de getChildAt()).

Necesito todos los 10 de los elementos, pero los 3 últimos son null objetos. He tratado de código como el siguiente:

getListView().smoothScrollToPosition();

Pero esto no funciona.

Creo que no necesito para publicar el resto de mi código, como la descripción lo dice todo?

Pero esto no funciona. – y es normal que no funciona porque la ListView contiene sólo las filas visibles, no crea los puntos de vista de los niños invisibles. Por qué usted necesita el acceso a todos ListView‘s hijo Vistas?
Cada fila contiene un RadioGroup y un Botón que debe ser llenado por el usuario. Todas las filas son necesarios.
Ustedes se están acercando por el camino equivocado. La acción del usuario debe ser reflejado en el adaptador de datos y desde allí se debe obtener el estado de la RadioGroup.
Eso es correcto. Voy a probarlo ahora. Gracias Luksprog.
Hola, acerca de la introducción de todos los datos es correcto (Método Externo). No acepta valores null de datos. Pero el ListView no mantener los valores actuales de RadioGroup en tiempo de ejecución. Ex: Línea 1: O O O O * O Línea 2: O O O O * O …. Línea 10: O O O O * O Cuando me enrollo con desplazamiento: Línea 1: * O O O (Volver al Valor Original) yo sé, esto es sobre el ListView que sólo mantener las filas visibles en cada posición, pero yo no encuentro ninguna solución. Alguna sugerencia? Muchas gracias por la paciencia y apoyo.

OriginalEl autor Vig | 2012-12-19

5 respuestas

  1. 3

    Como ya se ha visto que no puede obtener todo lo que el niño de la fila de las vistas desde un ListView simplemente porque un ListView contiene solamente los puntos de vista de las filas visibles(además de algunos reciclados filas, pero usted no puede llegar a esos). La forma correcta de hacer lo que quieres es almacenar los datos en el adaptador de datos y recuperar a partir de allí.

    Pero el ListView no mantener los valores actuales de RadioGroup en
    tiempo de ejecución.

    He visto que tiene algunos problemas con esto así que me he adaptado algunos antiguo código para construir un ejemplo básico, el código que usted puede encuentra aquí.

    Suena bonito. Voy a tratar de ayudar. Gracias.
    Muchas gracias Luksprog! Funciona perfectamente! Saludos!
    usted puede obtener todo lo Visible e invisible de los elementos de la Vista de Lista. Por favor, consulte stackoverflow.com/questions/25821744/get-all-listview-itemsrows/…

    OriginalEl autor Luksprog

  2. 2

    No creo que usted necesita para agregar desplácese a la vista de un listView. Desplácese funciona automáticamente en la vista de lista. Pruebe su aplicación sin la adición de desplazamiento de la vista y estoy seguro de que va a funcionar como usted necesita.

    Hola Rohit,en realidad tiene un desplazamiento automático como usted dijo. Yo no implementado.
    puedes publicar el código de tu adaptador. Según yo hay algún problema dentro de su adaptador de clase.

    OriginalEl autor Rohit

  3. 1

    La no visible a los niños de un listView en realidad no existe. Cuando se hacen visibles, uno de los redundante vistas, se reciclan o un nuevo punto de vista que se genera. Así que en realidad no se puede acceder a todos los puntos de vista. ¿Por qué quieres? Cualesquiera que sean los cambios que desea hacer debe ser realizado a los datos que rellena los puntos de vista en lugar de los puntos de vista propios.

    El usuario va a llenar todas las filas, y que va a utilizar el scroll para llenar la última. Ese es el problema.
    Cada vez que una fila se llena, el oyente para registrar el valor de un elemento de datos en el adaptador. Usted puede usar estos datos sin embargo que usted desea. Cuando getView() se llama con esa posición, puede restaurar el estado de uso de los datos.
    Yo lo he probado antes, pero la posición no seguir un patrón, siempre en el azar.

    OriginalEl autor

  4. 0

    La razón por la que los niños son nulos debido a que realmente no existen y que nunca va a existir, si sólo 7 niños están en la pantalla al mismo tiempo, el sistema sólo creará 7 y re-uso por el paso de la convertView de vuelta al adaptador de getView() método.

    Si desea obtener información acerca de su todo el conjunto de datos que usted debe buscar en el conjunto de datos en sí, en lugar de las vistas en la pantalla. E. g. si es un ArrayAdapter, lazo de la matriz; si es un CursorAdapter, pase el cursor; etc.

    Voy a tratar. Vamos a ver. Gracias Budius.

    OriginalEl autor Budius

  5. 0

    Hay un par de punto que usted necesita tomar el cuidado de:
    1. La vista de lista proporciona incorporado la funcionalidad de desplazamiento, Así que no use la tecla de Desplazamiento a la vista. Sólo estropear las cosas.
    2. La vista de lista no contiene TODOS los niños. Cuando se desplaza, se crea sólo los elementos visibles en tiempo de ejecución.
    3. Si desea obtener todos los niños en conjunto, Mejor que mantener un ArrayList de objetos secundarios que la lista tiene. Usted puede agregar o quitar los niños a este ArrayList como por requisito.

    OriginalEl autor Surendra Kumar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *