androizado
09/12/15, 20:47:24
Hola estoy teniendo un problema implementando un scroll automático en un listView horizontal.
El código es el siguiente:
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);
}
}
Explico variables:
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. :)
El código es el siguiente:
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);
}
}
Explico variables:
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. :)