¿Cómo desencadenar un evento cuando scrollView alcanza la parte inferior con Android?

Im que busca un acontecimiento que puedo utilizar en el scrollView para ser encendido cuando el usuario ha hecho scroll al fondo.

Por ejemplo, mi lista de elementos debe ampliarse con más elementos de forma automática.

¿Alguna idea de cómo se puede hacer esto?

Soy thanksfull para cualquier extremidad.

Por favor, lea este artículo: Android: Comprensión de cuando Scrollview ha alcanzado el fondo

Código fuente:

@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { // Grab the last child placed in the ScrollView, we need it to determinate the bottom position. View view = (View) getChildAt(getChildCount()-1); // Calculate the scrolldiff int diff = (view.getBottom()-(getHeight()+getScrollY())); // if diff is zero, then the bottom has been reached if( diff == 0 ) { // notify that we have reached the bottom Log.d(ScrollTest.LOG_TAG, "MyScrollView: Bottom has been reached" ); } super.onScrollChanged(l, t, oldl, oldt); } 

Si lo desea, puede agregar make a widget personalizado.

Ejemplo:

 package se.marteinn.ui; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.ScrollView; /** * Triggers a event when scrolling reaches bottom. * * Created by martinsandstrom on 2010-05-12. * Updated by martinsandstrom on 2014-07-22. * * Usage: * * scrollView.setOnBottomReachedListener( * new InteractiveScrollView.OnBottomReachedListener() { * @Override * public void onBottomReached() { * // do something * } * } * ); * * * Include in layout: * * <se.marteinn.ui.InteractiveScrollView * android:layout_width="match_parent" * android:layout_height="match_parent" /> * */ public class InteractiveScrollView extends ScrollView { OnBottomReachedListener mListener; public InteractiveScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public InteractiveScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public InteractiveScrollView(Context context) { super(context); } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { View view = (View) getChildAt(getChildCount()-1); int diff = (view.getBottom()-(getHeight()+getScrollY())); if (diff == 0 && mListener != null) { mListener.onBottomReached(); } super.onScrollChanged(l, t, oldl, oldt); } // Getters & Setters public OnBottomReachedListener getOnBottomReachedListener() { return mListener; } public void setOnBottomReachedListener( OnBottomReachedListener onBottomReachedListener) { mListener = onBottomReachedListener; } /** * Event listener. */ public interface OnBottomReachedListener{ public void onBottomReached(); } } 

Dado los requisitos, es probable que esté extendiendo BaseAdapter (a diferencia de CursorAdapter que utiliza un mecanismo diferente).

He aquí un fragmento para eso:

 public View getView(int position, View convertView, ViewGroup parent) { if (position == backingLinkedList.size()) { //get more items and add them to the backingLinkedList in a background thread notifyDataSetChanged(); } } 

Tuve el mismo problema y lo resolví mediante el uso de ListView (agrega automáticamente ScrollView si es necesario) y la configuración de OnScrollListener .

Aquí hay un ejemplo de código:

  tableListView.setOnScrollListener(new OnScrollListener() { public void onScrollStateChanged(AbsListView view, int scrollState) { } public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (visibleItemCount == totalItemCount) // too little items (ScrollView not needed) { java.lang.System.out.println("too little items to use a ScrollView!"); } else { if ((firstVisibleItem + visibleItemCount) == totalItemCount) { // put your stuff here java.lang.System.out.println("end of the line reached!"); } } } }); 

Aquí es una solución mucho más simple sin tener que subclase vista de desplazamiento. Suponiendo que tiene una variable RecyclerView recyclerView,

RecyclerView.computeVerticalScrollRange () le ofrece el rango de desplazamiento completo, o en otras palabras, la altura del contenido.

(RecyclerView.computeVerticalScrollOffset () da el desplazamiento de la parte superior a medida que se desplaza.Este valor continuará hasta la altura del contenido – altura de la vista de desplazamiento.

Asi que,

  if( (recyclerView.computeVerticalScrollOffset() == (recyclerView.computeVerticalScrollRange() - recyclerView.getHeight()) ) { // You have hit rock bottom. } 

Manipular la vista secundaria de la vista de desplazamiento sólo parece tan hacky.

  • Los eventos de análisis de Firebase no muestran valor
  • Evento para manejar el foco del EditText
  • OnRestart vs. OnResume - Cuestión del ciclo de vida de Android
  • Captura de pulsaciones de teclas en PhoneGap para Android
  • Hacer emergente la tecla pulsada en un teclado personalizado
  • borrar el evento del calendario en android mediante programación
  • Cómo hacer la detección de objetos en opengl Android?
  • Android: ¿Cómo crear un MotionEvent?
  • Inyectar eventos en Android sin root
  • Motionevent.getX y getY
  • Cordova Plugin para pasar el keycode de un evento keyUp a la aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.