|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Problema con scroll en ListView
Hola estoy teniendo un problema implementando un scroll automático en un listView horizontal.
El código es el siguiente: Código:
for (int i = 0; i <= count; i++){
ItemListView obj = ((ItemListView) getTablaTiempos().get(i));
if(segundos == obj.getTime()){
// Movemos carrousel a su posición
int offset = 0;
if(i > 0 || i < count){
offset = 70;
}
twoWayView.smoothScrollToPositionFromOffset(i, offset, 1500);
}
}
segundos: son los segundos que marca un crono mediante un Timer. (el cual se incrementa de 1 segundo) obj.getTime(): es el tiempo en el que la listView deberá moverse/mostrar el objeto que se muestra en la posición i del listView. El offset es cero porque si es el primero o último al que debo de mover el scroll no tendrá offset y si es el caso de que la vista está entre el primero y el último le doy un offset para que se quede cómo la imagen que adjunto. El problema que tengo es el siguiente: ListView con 5 posiciones A(5 segundos), B(20 segundos), C(30 segundos), D(45 segundos), E(60 segundos). Si yo no hago touch en la listView todo me va correctamente. Pero si por ejemplo voy por el segundo 10 y hago touch y me voy a la posición 4 que es la E. Cuando llega al segundo 20 que debe de mostrar B no lo hace bien, se queda el offset pillado y el scroll algunas veces va a trompicones. Pero si ya no vuelvo hacer touch el solo vuelve hacerlo bien, tal como adjunto en la imagen. Uso la librería twoWayView para el listView horizontal. Si tenéis una manera más sencilla de hacerlo o me podéis decir en que estoy fallando sería de gran ayuda. Gracias de antemano por la ayuda. Espero haberme explicado correctamente.
Última edición por androizado Día 11/12/15 a las 17:29:20. |
|
|
|
#2
|
||||
|
||||
|
No termino de entender exactamente lo que quieres hacer, creo que quieres hacer un foto paginador automático como tienen algunas webs.
Si es eso creo que te estás complicando mucho, puedes usar un CountDownTimer, y que en cada onTick vaya a la posición que le corresponda. Puedes ponerle un tiempo considerablemente grande al Finish para que "nunca" se ejecute, o volver a hacer un start en el onFinish() para que se vuelva a ejecutar. Y en cuanto al ListView horizontal, te aconsejo que migres a RecyclerView. Es la forma que tiene Google de dar soporte a los ListView horizontales y además con reciclado de vista. Otra cosa buena es que si quieres que el listado mañana sea vertical sólo tienes que cambiar 1 línea, o si quieres que sea un Grid lo mismo. |
|
#3
|
||||
|
||||
|
Si, por si sirve de ejemplo mi idea es cómo las listas horizontales que tiene ahora Google play. Adjunto imagen. Pero que cada cierto tiempo vaya cambiandosé. El recyclerview no lo conocia he estado viendo intentaré tirar por ahí.
|
![]() |
Estás aquí
|
||||||
|
||||||