У меня есть RecyclerView
, высота которого установлена в wrap_content
. Теперь мне нужно реализовать OnLoadMore
, но есть проблема. я использовал,Android - OnLoadMore в RecyclerView с высотой wrap_content
RecyclerView.OnScrollListener.onScrolled(RecyclerView recyclerView, int dx, int dy)
Но он не получает вызывается, потому что мой RecyclerView
не прокручивается. Его высота 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>
Так мне нужно использовать другой подход для загрузки нескольких страниц RecyclerView
. Я думаю, что лучший способ сделать это, вызывает событие onLoadMore
, когда становится видимым последний элемент RecyclerView
. Я уже пытался сделать это с помощью метода onBindViewHolder
в адаптере, но все загруженные страницы полностью.
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();
}
}
}
Что такое альтернативный способ реализации onLoadMore
без использования событий прокрутки?
Update:
RecyclerView
В отлично работает с android:layout_height:"wrap_content"
и мои ScrollView
прокручивается плавно.
Update 2:
Моя проблема в том, когда ваш RecyclerView
высота wrap_content
, Спиральные события RecyclerView
не могут быть вызваны. Поэтому мне нужен альтернативный способ узнать, когда мой RecyclerView
достигает конца своего списка и таким образом реализует событие OnLoadMore
.
Update 3
Я упрощена XML, прежде чем я написал в вопросе ... В реальной XML, есть ViewPager
вместо RecyclerView
. И у меня есть 4 вкладки в том, что ViewPager
, что каждая вкладка содержит RecyclerView
с различным содержимым.
Выше этого ViewPager
У меня есть информация о пользователе, и я хочу прокрутить их все вместе. Поэтому я поставил этот заголовок и ViewPager
в ScrollView
и установил высоту RecyclerView
на wrap_content
.
Вы можете посмотреть страницу профиля instagram. Я хочу, чтобы эта страница работала именно так.
Невозможно показать эту информацию в заголовке RecyclerView
, потому что таким образом я должен добавить эту информацию в каждый RecyclerView
на каждой вкладке.
Что такое поддержка для Android версии Android? – Ironman
@Ironman 24.2.1 – K2evil
Зачем вам нужно, чтобы высота 'RecyclerView' была' wrap_content'? –