Я создаю простое приложение для чата, которое отлично подходит для этого. В настоящее время я хотел бы реализовать загрузку с бесконечной прокруткой в обратном порядке, при этом, если я прокручиваю до верхней части моего RecyclerView
, когда общее сообщение составляет >= 20
, оно загружает 20
более старых сообщений. Я пробовал много возможных решений изо всех сил, но это не работает. Мой приведенный ниже код всегда запускает loadmore
, даже когда я прокручиваю вверх или вниз, пожалуйста, мне нужна помощь.
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private RecyclerView.Adapter adapter;
private boolean isScrolling;
private int TotalItems;
private int currentVisible;
private int scrolledOutItems = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
InitDownloadLast20Messages();
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL){
isScrolling = true;
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
currentVisible = layoutManager.getChildCount();
TotalItems = layoutManager.getItemCount();
scrolledOutItems = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
int check = TotalItems - currentVisible+scrolledOutItems;
if (isScrolling && TotalItems == currentVisible + scrolledOutItems ){
Log.d(TAG,"Fetch Data More Older Message here ");
}
}
});
}