Ich habe RecyclerView
, deren Höhe auf wrap_content
festgelegt ist. Jetzt muss ich OnLoadMore
implementieren, aber es gibt ein Problem. I verwendet,Android - OnLoadMore in RecyclerView mit wrap_content Höhe
RecyclerView.OnScrollListener.onScrolled(RecyclerView recyclerView, int dx, int dy)
Aber es ist nicht aufgerufen werden kann, da meine RecyclerView
bewegen sich nicht. Seine Höhe ist 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>
Also muss ich einen anderen Ansatz verwenden, um weitere Seiten zu RecyclerView
geladen. Ich denke, der beste Weg, dies zu tun, ruft onLoadMore
Ereignis, wenn der letzte Artikel von RecyclerView
sichtbar werden. Ich habe bereits versucht, dies von onBindViewHolder
Methode im Adapter zu tun, aber alle Seiten insgesamt geladen.
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();
}
}
}
Was ist die Alternative Art und Weise onLoadMore
zu implementieren, ohne Scroll-Ereignisse zu verwenden?
Update:
Die RecyclerView
funktioniert perfekt mit android:layout_height:"wrap_content"
und meine ScrollView
Rollen reibungslos.
Update 2:
Mein Problem ist, wenn Ihr RecyclerView
Höhe wrap_content
, Scroll-Ereignisse von RecyclerView
kann nicht aufgerufen werden soll. Also brauche ich einen alternativen Weg, um herauszufinden, wann mein RecyclerView
Ende seiner Liste erreicht und OnLoadMore
Ereignis auf diese Weise implementieren.
Update 3
I xml vereinfacht, bevor ich es in Frage geschrieben ... In realen xml, ist es ViewPager
anstelle des RecyclerView
. Und ich habe 4 Registerkarten in diesem ViewPager
, dass jede Registerkarte eine RecyclerView
mit unterschiedlichen Inhalten enthält.
Über diesem ViewPager
habe ich einige Informationen über Benutzer und ich möchte alle zusammen scrollen. Also setze ich diesen Header und ViewPager
in einen ScrollView
und setze die Höhe von RecyclerView
auf wrap_content
.
Sie können sich die Profilseite von instagram ansehen. Ich möchte auf dieser Seite so arbeiten.
Es ist nicht möglich, diese Informationen im Header von RecyclerView
anzuzeigen, weil auf diese Weise ich diese Informationen in jedem RecyclerView
in jeder Registerkarte hinzufügen sollte.
Was ist Support-Bibliothek Android-Version, die Sie verwenden? – Ironman
@Ironman 24.2.1 – K2evil
Warum brauchen Sie die 'RecyclerView'-Höhe, um' wrap_content' zu sein? –