Разбиение на страницы базы данных Firebase в реальном времени в RecyclerviewJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Разбиение на страницы базы данных Firebase в реальном времени в Recyclerview

Сообщение 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;
}
});
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... cyclerview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»