我想在滚动时从firebase-database加载数据。我使用了FirebaseRecyclerPagingAdapter
形式的firebase-ui。我的查询是
Query query=FirebaseDatabase.getInstance().getReference()
.child("Users")
.child(user.getUid())
.child("notification")
.orderByChild("reqTime");
但是我得到了无限滚动视图。删除orderByChild
将显示预期结果。但是在这里我想先加载最近的数据。有什么办法可以首先使用FirebaseRecyclerPagingAdapter
加载最近的数据?还是不使用FirebaseRecyclerPagingAdapter
,如何使用分页加载最近的数据?这是我的代码
PagedList.Config config = new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setPrefetchDistance(5)
.setPageSize(10)
.build();
DatabasePagingOptions<BookRequestData> options = new DatabasePagingOptions.Builder<BookRequestData>()
.setLifecycleOwner(this)
.setQuery(query, config, BookRequestData.class)
.build();
mAdapter = new FirebaseRecyclerPagingAdapter<BookRequestData, NotificationViewHolder>(options) {
@NonNull
@Override
public NotificationViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new NotificationViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.notification_item, parent, false));
}
@Override
protected void onBindViewHolder(@NonNull NotificationViewHolder holder, int position, @NonNull final BookRequestData bookRequestData) {
//other stuffs
}
@Override
protected void onLoadingStateChanged(@NonNull LoadingState state) {
switch (state) {
case LOADING_INITIAL:
case LOADING_MORE:
// Do your loading animation
mSwipeRefreshLayout.setRefreshing(true);
break;
case LOADED:
// Stop Animation
mSwipeRefreshLayout.setRefreshing(false);
break;
case FINISHED:
//Reached end of Data set
mSwipeRefreshLayout.setRefreshing(false);
break;
case ERROR:
retry();
break;
}
}
不使用orderByChild
,它显示的是
使用orderByChild
表示
答案 0 :(得分:0)
我了解您要实现的内容,但是该适配器目前不支持高级查询,因为文档中已经提到了该高级查询。 如果使用查询,则适配器的行为将如下所示。这是此适配器的问题,将尝试找出它。 谢谢!