J'ai RecyclerView
dont la hauteur est définie sur wrap_content
. Maintenant, je dois mettre en œuvre OnLoadMore
mais il y a un problème. je,Android - OnLoadMore dans RecyclerView avec hauteur wrap_content
RecyclerView.OnScrollListener.onScrolled(RecyclerView recyclerView, int dx, int dy)
Mais il ne soit pas invoqué parce que mon RecyclerView
ne défile pas. Sa hauteur est de wrap_content
.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_rtl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<include
android:id="@+id/tool_bar"
layout="@layout/toolbar" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/tool_bar">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.yarima.msn.Activities.ProfileActivity">
<FrameLayout
android:id="@+id/FRAGMENT_PLACEHOLDER"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<!-- Some Content That I want to scroll with recyclerview -->
</FrameLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_posts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:bellow="@id/FRAGMENT_PLACEHOLDER"/>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
donc je dois utiliser une autre approche pour charger d'autres pages à RecyclerView
. Je pense que la meilleure façon de faire cela, appelle l'événement onLoadMore
lorsque le dernier élément de RecyclerView
devient visible. J'ai déjà essayé de le faire à partir de la méthode onBindViewHolder
dans l'adaptateur, mais toutes les pages chargées complètement.
if(getItemCount()-position == 1 && onLoadMoreListener != null){
if (recyclerView != null) {
visibleItemCount = recyclerView.getChildCount();
totalItemCount = recyclerView.getLayoutManager().getItemCount();
firstVisibleItem = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
}
}
if (!loading && (totalItemCount - visibleItemCount)
<= (firstVisibleItem + visibleThreshold)) {
loading = true;
onLoadMoreListener.onLoadMore();
}
}
}
Quelle est la façon alternative à mettre en œuvre onLoadMore
sans utiliser les événements de défilement?
Mise à jour:
Les RecyclerView
fonctionne parfaitement avec android:layout_height:"wrap_content"
et mes ScrollView
défile en douceur.
Mise à jour 2:
Mon problème est quand votre taille RecyclerView
est wrap_content
, défilement des événements de RecyclerView
ne peuvent être invoquées. J'ai donc besoin d'un moyen alternatif pour savoir quand mon RecyclerView
atteint la fin de sa liste et implémenter l'événement OnLoadMore
de cette façon.
Mise à jour 3
I simplifié xml avant je l'ai écrit en question ... En xml réel, il est ViewPager
au lieu du RecyclerView
. Et j'ai 4 onglets dans ce ViewPager
que chaque onglet contient un RecyclerView
avec des contenus différents. Au-dessus de ce ViewPager
J'ai quelques informations sur l'utilisateur et je veux faire défiler tous ensemble. Donc, je mets cet en-tête et ViewPager
dans un ScrollView
et définir la hauteur de RecyclerView
à wrap_content
.
Vous pouvez consulter la page de profil d'instagram. Je veux que cette page fonctionne comme ça.
Il n'est pas possible d'afficher cette information dans l'en-tête de RecyclerView
parce que de cette façon, je devrais ajouter cette information dans chaque RecyclerView
dans tous les onglets.
Quelle est la version de support de la bibliothèque Android que vous utilisez? – Ironman
@Ironman 24.2.1 – K2evil
Pourquoi avez-vous besoin de la hauteur 'RecyclerView' pour être' wrap_content'? –