Quiero implementar la paginación con recyclerView, para esto añado addOnScrollListener a la recyclerView pero estoy teniendo problemas con RecyclerView.OnScrollListener no funciona cuando pongo rvGridExplore.setNestedScrollingEnabled(false);

Pero cuando me quite rvGridExplore.setNestedScrollingEnabled(false); se está trabajando muy bien,
No sé cómo manejar esto.

Es aquí el código:

rvGridExplore = (RecyclerView) view.findViewById(R.id.rvGridExplore);
        final GridLayoutManager glm = new GridLayoutManager(context,2);
       //rvGridExplore.setNestedScrollingEnabled(false);
        rvGridExplore.setLayoutManager(glm);

       //final int visibleItemCount,totalCount,pastVisibleItems;
        rvGridExplore.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                Log.v("scrollll","state changed");
            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if (dy > 0) {
                    int totalCount = glm.getItemCount();
                    int visibleItemCount = glm.getChildCount();
                    int pastVisibleItems = glm.findFirstVisibleItemPosition();
                    if (loading) {
                        if ((visibleItemCount + pastVisibleItems) >= totalCount) {
                            Log.v("scroll","scrolled"+pastVisibleItems);
                        }
                    }

                }
            }
        });
  • Por qué usted necesita para llamar a setNestedScrollingEnabled(falso)?
  • es bajo NestedScrollView que está bajo coordinador de diseño, si se me quita este, la Barra de herramientas no es el desplazamiento hacia arriba
  • Espera, ¿quieres que la Barra de herramientas para desplazarse hacia arriba o quieres que no para desplazarse hacia arriba?
  • quiero para desplazarse hacia arriba, y su trabajo de encontrar cuando rvGridExplore.setNestedScrollingEnabled(false);
  • Que no tiene sentido…. debe ser lo contrario.
  • su trabajo bien, ahora el problema es para OnScrolllistener
  • soy también enfrentan el mismo problema…¿encontraste alguna solución?
  • NO, no he encontrado todavía
  • encontraste alguna solución?
  • Alguno encontró la solución de OnScrolllistener?

InformationsquelleAutor Adnan Ali | 2016-07-04

5 Comentarios

  1. 5

    Esta pregunta puede ser viejo, sino para ayudar a otros que tropecé con este problema, me gustaría compartir lo que yo hice. Tuve que implementar onScroll Escucha a recyclerview para cargar los datos desde el servidor y hacer algunos cambios de interfaz de usuario. Y también se necesita swipeRefresh Diseño para actualizar los datos.

    Este fue mi estructura de un archivo xml,

    -RelativeLayout
    
     -SwipeRefreshLayout
    
      -NestedScrollView
    
       -LinearLayout(Vertical)
    
        -Multiple views required

    Después de esto, para detectar arriba y abajo de desplazamiento que he implementado setOnScrollListener a la NestedScrollView.

    Uso Normal de SwipeRefreshLayout para actualizar los datos.

    Y cargar más datos que implementa la lógica dentro de onScrollListener de NestedScrollingView.

    if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight()))  {
    
        //Load More Data
    }
  2. 1

    Hacer agregar setOnScrollChangeListner a su NestedScrollView

     nestedScrollview.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
            @Override
            public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight()))  {
                   if(loading)
                    onClick();
                   loading=false;
                }
            }
        });

    después de la carga de datos desde el servidor de conjunto de booleanos de carga=true.

  3. 0

    Paso 1 : Crear EndlessRecyclerOnScrollListener

    public abstract class EndlessRecyclerOnScrollListener extends RecyclerView.OnScrollListener {
    
        public static String TAG = EndlessRecyclerOnScrollListener.class.getSimpleName();
    
        //use your LayoutManager instead
        private LinearLayoutManager llm;
    
        public EndlessRecyclerOnScrollListener(LinearLayoutManager sglm) {
            this.llm = llm;
        }
    
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
    
            if (!recyclerView.canScrollVertically(1)) {
                onScrolledToEnd();
            }
        }
    
        public abstract void onScrolledToEnd();
    }

    Paso 2: Aplicar el desplazamiento de escucha para recicladoras de vista.

    recyclerview.addOnScrollListener(new EndlessRecyclerOnScrollListener(mLayoutManager) {
                @Override
                public void onScrolledToEnd() {
                    Log.e("Position", "Last item reached");
                    if (loadMore == true) {
                        //put your Load more code
                        //add 10 by 10 to tempList then notify changing in data
                    }
                }
            });
    • usted quiere decir que me ponga al niño en el constructor de la clase va a trabajar ? por favor, lea la pregunta correctamente. mi Oyente no está funcionando debido a setNestedScrollingEnabled(false);
    • que por qué le están poniendo nestedScrollingEnabled(falso) ??
    • vea los comentarios en cuestión
    • yo también hacer una paginación con este código como la misma situación que tú
    • primero ponga su layout.xml si desea que la respuesta adecuada!!
    • No funciona en el caso de StaggeredGridLayoutManager …¿tienes alguna idea sobre esto..por Favor ayuda
    • Uso flexboox diseño de google @RavindraKushwaha
    • Quiero cargar más funcionalidad en mi Straggered recyclview…sin Embargo, ahora me estoy enfrentando el problema es que.. no estoy recibiendo el evento para identificar a ese usuario que se alcanza en la parte inferior de la lista O no…Podría u plz me ayuden en esto… también he hecho la pregunta en la parte de la..Mi pregunta enlace es este stackoverflow.com/questions/41930139/…

  4. 0

    Se dijo en un comentario a tu pregunta «

    es bajo NestedScrollView que está bajo coordinador de diseño, si se me quita este, la Barra de herramientas no es el desplazamiento hacia arriba». Esto es un error.

    He encontrado que no se puede tener las dos formas, la CoordinatorLayout comportamiento se rompe cuando usted tiene un RecyclerView dentro de un NestedScrollView a los que se ha añadido el comportamiento. Usted necesidad de utilizar una o la otra.

    Cuando usted tiene un RecyclerView dentro de un NestedScrollView funcionará como establece RecyclerView.setNestedScrollingEnabled(false), pero como se enteró de esto significa que el OnScrollListener no es llamado.

    La única manera de que todos los componentes funcionen correctamente es quitar el NestedScrollView, asegúrese de que usted no establece de anidación de desplazamiento a la falsa y trabajar desde allí. De lo contrario, la RecyclerView.OnScrollListener de los eventos no se activará correctamente.

  5. 0

    quitar el anidado de desplazamiento de la vista uso lineal o pariente de diseño en lugar de como elemento raíz, a continuación, puede escribir recyclerview.setNestedScrollEnabled(false);

Dejar respuesta

Please enter your comment!
Please enter your name here