entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

No mostrar Todo el Select (Mysql) en un Listview, Android

Buen día estoy terminando una aplicación y necesito mostrar en un Listview unos datos, pero tengo una duda..

como puedo hacer para que el resultado de un select no se muestre todo en la pantalla, esto afectara el rendimiento de la aplicacion y el consumo de datos..

supongamos que tengo esta tabla > *select from productos**..

quisiera que me mostrara los primeros 15 producto y cuando llegue al final del listView me cargue otros 15... no se si me entiendan.. Tipo el Home de facebook en donde vienen los post de todos tus amigos...

espero me puedan orientar un poco haber que es lo que se usa en esos casos.. Saludos..

3 Respuestas

1voto

carlossevi Puntos63580

Tiene que cargar inicialmente una serie de registros limitando la consulta inicial. Posteriormente se le añade una escucha al scroll de la pantalla para saber cuando se llega al final y es necesario cargar más datos. Para ello se utiliza el OnScrollListener, aquí su documentación.

He encontrado un proyecto de CodePath en GitHub que publica un ejemplo completo de su implementación: Endless Scrolling with AdapterViews.

En el ejemplo crea una clase EndlessScrollListener implementada sobre OnScrollListener. Una vez añadida a tu proyecto la gestión de la actualización queda así:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ... the usual 
        ListView lvItems = (ListView) findViewById(R.id.lvItems);
        // Attach the listener to the AdapterView onCreate
        lvItems.setOnScrollListener(new EndlessScrollListener() {
        @Override
        public void onLoadMore(int page, int totalItemsCount) {
                // Triggered only when new data needs to be appended to the list
                // Add whatever code is needed to append new items to your AdapterView
            customLoadMoreDataFromApi(page); 
                // or customLoadMoreDataFromApi(totalItemsCount); 
        }
        });
    }

    // Append more data into the adapter
    public void customLoadMoreDataFromApi(int offset) {
      // This method probably sends out a network request and appends new data items to your adapter. 
      // Use the offset value and add it as a parameter to your API request to retrieve paginated data.
      // Deserialize API response and then construct new objects to append to the adapter
    }
}

Échale un vistazo al enlace del proyecto porque es muy interesante.

0voto

Leonardo-Tadei comentado

Si lo que Novo está haciendo no es una WebApp, la respuseta de Carlos es sin dudas la mejor!

El ListView es HTML o nativo de Android???

0voto

Novus Ordo Seclorum comentado

Completamente nativa, los datos que recibiría serian de una base de datos Mysql mediante un WS hecho en PHP.... Creo que la respuesta de carlos es lo que necesito.. La implementare y les cuento como me fue

0voto

Hola, la solución sería hacer una especie de paginación, es decir, muestro 15 productos y cuando el usuario haya hecho scroll hasta el final cargo los 15 siguientes. En internet, si buscas algo como "scroll infinito android" o "listview paginada android" seguro te aparecerán muchos resultados. La cosa es jugar con el primer resultado que te devuelve la consulta y limitar el número de filas que te devuelve.

Saludos.

1voto

Leonardo-Tadei Puntos227320

Hola Novo,

la solución que mencionás se llama "scroll infinito". Tiene ventajas y desventajas: la ventaja es que el usuario nunca tiene que apretar "siguiente"; la desventaja es que no hay como ir, por ejemplo, a la página 5, porque no hay controles para manejar esto y tenés que bajar y bajar hasta llegar ahí.

Nosotros para esto usamos http://www.infinite-scroll.com/ como plugin de JQuery. Es simple de integrar y cómodo.

Saludos!

0voto

Novus Ordo Seclorum comentado

gracias por responder leonardo... la verdad no sabia ni como se llamaba ese Truco jeje pero ahora con sus respuestas puedo buscar mas información acerca de... gracias.. me encanta esta comunidad de Entredesarrolladores.!!! jaja Saludos,!!!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta