آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در لیست بی نهایت (endless recycler)

Shadow  9 سال پیش  9 سال پیش
0 0

سلام دوستان من یه لیست بی نهایت دارم که همه چی درست کار می کنه فقط یه مشکل داره اونم اینه که وقتی اطلاعات جدید رو لود می کنه و اضافه میشن به لیست ، لیست یه جورای رفرش میشه و به اولین آیتم برمی گرده و باید از اول دوباره اسکرول کنی تا بررسی به اطلاعات جدید ولی نباید اینجوری باشه می خوام وقتی اطلاعات جدید لود شد از همون جا نمایش بده ؟ لطفا کمک کنید :

 
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();
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .