بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل در لیست بی نهایت (endless recycler)
سلام دوستان من یه لیست بی نهایت دارم که همه چی درست کار می کنه فقط یه مشکل داره اونم اینه که وقتی اطلاعات جدید رو لود می کنه و اضافه میشن به لیست ، لیست یه جورای رفرش میشه و به اولین آیتم برمی گرده و باید از اول دوباره اسکرول کنی تا بررسی به اطلاعات جدید ولی نباید اینجوری باشه می خوام وقتی اطلاعات جدید لود شد از همون جا نمایش بده ؟ لطفا کمک کنید :
public abstract class EndlessRecyclerOnScrollListener extends RecyclerView.OnScrollListener {
private int previousTotal = 0; // The total number of items in the dataset after the last load
private boolean loading = true; // True if we are still waiting for the last set of data to load.
private int visibleThreshold = 5; // The minimum amount of items to have below your current scroll position before loading more.
int firstVisibleItem, visibleItemCount, totalItemCount;
private int current_page = 0;
private LinearLayoutManager mLinearLayoutManager;
public EndlessRecyclerOnScrollListener(LinearLayoutManager linearLayoutManager) {
this.mLinearLayoutManager = linearLayoutManager;
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
visibleItemCount = recyclerView.getChildCount();
totalItemCount = mLinearLayoutManager.getItemCount();
firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
}
}
if (!loading && (totalItemCount - visibleItemCount)
<= (firstVisibleItem + visibleThreshold)) {
// End has been reached
// Do something
current_page++;
onLoadMore(current_page);
loading = true;
}
}
public abstract void onLoadMore(int current_page);
}
recyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener(manager) {
@Override
public void onLoadMore(int current_page) {
int lastFirstVisiblePosition = ((GridLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
((GridLayoutManager) recyclerView.getLayoutManager()).scrollToPosition(lastFirstVisiblePosition);
LoadMore(current_page);
}
});
if (page == 0) {
adapterUserPost = new AdapterUserPost(userPosts);
} else {
AdapterUserPost.addData(userPosts);
}
recyclerView.setAdapter(adapterUserPost);
adapterUserPost.notifyDataSetChanged();
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .