Я реализую метод разбиения по страницам в своем коде, однако когда recyclerview достигает последнего элемента, код дублирует те же элементы, загруженные в начале, в этом случае он не загружает новые элементы
Ниже приведены методы загрузки изображений и текста, над которыми я работаю.
ProgressBar progressBar1;
RecyclerView recyclerView;
private UserRVAdapter mAdapter;
final int mPostsPerPage = 5;
boolean mIsLoading = false;
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int lastVisiblesItems = layoutManager.findLastVisibleItemPosition();
int firstVisiblesItems = layoutManager.findFirstVisibleItemPosition();
if (!recyclerView.canScrollVertically(1) && dy > 0) { //scrolled to BOTTOM
Toast.makeText(getContext(), "fetch data", Toast.LENGTH_SHORT).show();
getUsers(mAdapter.getLastItemId());
mIsLoading = true;
progressBar1.setVisibility(View.VISIBLE);
} else if (lastVisiblesItems > 2 && dy < 0) {
}
}
});
недействительно:
private void getUsers(String nodeId) {
Query query;
if (nodeId == null)
query = FirebaseDatabase.getInstance().getReference()
.child("Data")
.orderByKey()
.limitToFirst(mPostsPerPage);
else
query = FirebaseDatabase.getInstance().getReference()
.child("Data")
.orderByKey()
.startAt(nodeId)
.limitToFirst(mPostsPerPage);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
UserModel user;
List userModels = new ArrayList();
for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
userModels.add(userSnapshot.getValue(UserModel.class));
}
mAdapter.addAll(userModels);
mIsLoading = false;
progressBar1.setVisibility(View.GONE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
mIsLoading = false;
}
});
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... cyclerview
Разбиение на страницы базы данных Firebase в реальном времени в Recyclerview ⇐ JAVA
Программисты JAVA общаются здесь
1719018844
Anonymous
Я реализую метод разбиения по страницам в своем коде, однако когда recyclerview достигает последнего элемента, код дублирует те же элементы, загруженные в начале, в этом случае он не загружает новые элементы
Ниже приведены методы загрузки изображений и текста, над которыми я работаю.
ProgressBar progressBar1;
RecyclerView recyclerView;
private UserRVAdapter mAdapter;
final int mPostsPerPage = 5;
boolean mIsLoading = false;
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int lastVisiblesItems = layoutManager.findLastVisibleItemPosition();
int firstVisiblesItems = layoutManager.findFirstVisibleItemPosition();
if (!recyclerView.canScrollVertically(1) && dy > 0) { //scrolled to BOTTOM
Toast.makeText(getContext(), "fetch data", Toast.LENGTH_SHORT).show();
getUsers(mAdapter.getLastItemId());
mIsLoading = true;
progressBar1.setVisibility(View.VISIBLE);
} else if (lastVisiblesItems > 2 && dy < 0) {
}
}
});
недействительно:
private void getUsers(String nodeId) {
Query query;
if (nodeId == null)
query = FirebaseDatabase.getInstance().getReference()
.child("Data")
.orderByKey()
.limitToFirst(mPostsPerPage);
else
query = FirebaseDatabase.getInstance().getReference()
.child("Data")
.orderByKey()
.startAt(nodeId)
.limitToFirst(mPostsPerPage);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
UserModel user;
List userModels = new ArrayList();
for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
userModels.add(userSnapshot.getValue(UserModel.class));
}
mAdapter.addAll(userModels);
mIsLoading = false;
progressBar1.setVisibility(View.GONE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
mIsLoading = false;
}
});
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78654838/firebase-realtime-database-pagination-in-recyclerview[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия