Cómo obtener la última posición de vista de desplazamiento, vista de desplazamiento

Estoy utilizando TableLayout. Que tienen 100 de elementos para hacerla desplazable Estoy usando Tablelayout dentro de ScrollView. Pero tengo que detectar si el usuario ha desplazado a la última fila. Si el usuario ha desplazado a la última vista, se mostrará al usuario un mensaje Toast. Pero cómo saber que el usuario ha desplazado a la última fila de la tablelayout. He referido el código de TableLayout dentro de ScrollVie w.

Http://huuah.com/using-tablelayout-on-android/

Si la nueva posición y desplazada + la altura de la vista de desplazamiento> = altura de la tabla que significa que ha llegado al final de la lista.

Para lograr esto tienes que escribir tu custiom scrollview.

Paso-1 Tienes que crear una vista de desplazamiento personalizada extendiendo ScrollView

 package com.sunil; import android.content.Context; import android.util.AttributeSet; import android.widget.ScrollView; public class LDObservableScrollView extends ScrollView { private LDObservableScrollViewListener scrollViewListener = null; public LDObservableScrollView(Context context) { super(context); } public LDObservableScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public LDObservableScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public void setScrollViewListener(LDObservableScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if(scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } } 

Paso-2 Crear un Listener para detectar cambios en el desplazamiento

Paquete com.sunil; Import LDObservableScrollView;

 public interface LDObservableScrollViewListener { void onScrollChanged(LDObservableScrollView scrollView, int x, int y, int oldx, int oldy); } 

Paso 3 en el diseño xml en lugar de ScrollView utilizar la vista de desplazamiento personalizado

 <com.abc.LDObservableScrollView android:layout_width="fill_parent" android:layout_marginTop="1dip" android:id="@+id/OLF_ScrollView" android:layout_height="fill_parent" android:background="@drawable/small_list_back"> <TableLayout android:layout_width="fill_parent" android:id="@+id/OLF_tableLayout_TableLayout" android:layout_height="fill_parent"> </TableLayout> </com.abc.LDObservableScrollView> 

Paso-4 En su clase de actividad o donde desea detectar el evento de desplazamiento utilice el siguiente código

 public class DetectHere implements LDObservableScrollViewListener{ ... LDObservableScrollView scrollView = (LDObservableScrollView)view.findViewById(R.id.OLF_ScrollView); scrollView.setScrollViewListener(this); ..... @Override public void onScrollChanged(LDObservableScrollView scrollView, int x, int y, int oldx, int oldy) { // TODO Auto-generated method stub if((scrollView.getHeight()+y) >= tableLayout.getHeight()){ Log.e("Custom Listener ", "END OF LIST OCCURRED ::"); } } 

Esto también funcionó para mí, pero mi valor de y en el onScrollChanged nunca llega más alto que la altura de mi Samsung Galaxy Tab 2 7 ". Pero funciona en la pestaña galaxia 2 10.1" ¿Alguna idea por qué?

[Editar] He visto ahora que esto ocurre cuando la pantalla es menor que una cierta altura, 1000px por ejemplo. Porque cuando hice el contenido de mi pergamino menos de 1200 en la lengüeta de la galaxia 10.1 ", paró el trabajar para la detección máxima de la altura.

[Editar] He encontrado la solución, no estaba detectando el tamaño del rollo correctamente, para hacer eso, lo que he hecho fue el siguiente:

 protected void onScrollChanged(int horizontalScrollPosition, int verticalScrollPosition, int previousHorizontalScrollPosition, int previousVerticalScrollPosition) { int scrollTotalHeight = this.getChildAt(0).getHeight() - super.getHeight(); if(_previousImage != null) if(verticalScrollPosition <= 0) _previousImage.setVisibility(View.GONE); if(_nextImage != null) if(verticalScrollPosition >= scrollTotalHeight) _nextImage.setVisibility(View.GONE); super.onScrollChanged(horizontalScrollPosition, verticalScrollPosition, previousHorizontalScrollPosition, previousVerticalScrollPosition); } 
  • Cómo rellenar el diseño de la tabla con la cadena JSON
  • Barra de desplazamiento horizontal y vertical en Android con tablelayout?
  • Separación entre filas en la disposición de la tabla
  • Cuadrícula con bordes
  • TableLayout Vs Recycler Ver?
  • Vista de lista expandible con diseño de tabla en android
  • Establecer ancho igual de columnas en el diseño de la tabla en Android
  • Establecer el número de columnas mediante programación en TableLayout
  • Android TableLayout Ancho
  • Cómo establecer layout_span a través de código
  • Multiline TextView en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.