Я использую в моем приложении GridLayoutManager с 3-мя счетами в recyclerView, проблема в том, что когда я запускаю приложение в первый раз, оно показывает только первые 10 элементов из-за ограничения / разбиения элементов на сервере, когда пользователь обновляется с помощью SwipeRefreshLayout
или прокрутка, она продолжает загружать другие элементы, но при первой загрузке элементов это выглядит уродливо, поэтому я хочу заполнить эти пробелы без необходимости обновления для загрузки других элементов
вот это сетка с прослушивателем прокрутки
gridLayoutManager = new GridLayoutManager(MainActivity.this, 3);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
isScrolling = true;
progressBar.setVisibility(View.GONE);
}
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 0) {
currentItems = gridLayoutManager.getChildCount();
totalItems = gridLayoutManager.getItemCount();
scrollOutItems = gridLayoutManager.findFirstVisibleItemPosition();
if (isScrolling && (currentItems + scrollOutItems == totalItems)) {
isScrolling = false;
if (getItemsByLabelCalled) {
for (int i = 1; i < 7; i++) {
if (navigationView.getMenu().getItem(i).isChecked()) {
getItemsByLabel(navigationView.getMenu().getItem(i).getTitle().toString());
}
}
} else {
getData();
}
}
}
}
});
SwipeRefreshLayout
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (navigationView.getMenu().getItem(0).isChecked()) {
if (Utils.hasNetworkAccess(MainActivity.this)) {
getData();
} else {
Toast.makeText
(MainActivity.this, R.string.SwipeRefreshLayout_connect_to_update
, Toast.LENGTH_LONG).show();
}
} else {
for (int i = 1; i < 7; i++) {
if (navigationView.getMenu().getItem(i).isChecked()) {
getItemsByLabel(navigationView.getMenu().getItem(i).getTitle().toString());
}
}
}
new Handler().postDelayed(() -> swipeRefreshLayout.setRefreshing(false), 2000);
}
});
Проблема, описанная с изображениями