我需要知道如何在使用Firebase滚动时动态加载数据。如果我使用Firebase查询数据,则必须一次性加载所有数据或始终更改数据。我希望每个限制使用Firebase加载数据,并且在达到此限制后,加载更多数据并且越来越多。
它基本上就像Facebook的时间线 - 作为一个社交网络。
例如:我想从Firebase获取限制50的最新记录。达到此限制后,我将下载下50个数据。我想使用RecyclerView
而不是FirebaseRecycler
类。
FirebaseRecyclerAdapter无法解决我的问题。感谢帮助。我需要点视图布局的facebook时间线等loadind数据,并加载点数据库数据Firebase(50到50.下载50个数据,达到限制,加载底部布局的更多数据到50)。
你能帮帮我吗?
答案 0 :(得分:3)
这完全没问题。 Infinite-Scroll-Endless-Scrolling-Tutorial
private RecyclerView recyclerView;
boolean userScrolled=false;
private boolean loading = true;
int pastVisiblesItems, visibleItemCount, totalItemCount;
LinearLayoutManager mLayoutManager;
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mLayoutManager = new LinearLayoutManager(MainActivity.this);
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(mAdapter);
// Implement scroll listener
public void implementScrollListener() {
recyclerView
.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView,
int newState) {
super.onScrollStateChanged(recyclerView, newState);
// If scroll state is touch scroll then set userScrolled
// true
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
userScrolled = true;
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx,
int dy) {
super.onScrolled(recyclerView, dx, dy);
// Here get the child count, item count and visibleitems
// from layout manager
visibleItemCount = mLayoutManager.getChildCount();
totalItemCount = mLayoutManager.getItemCount();
pastVisiblesItems = mLayoutManager
.findFirstVisibleItemPosition();
// Now check if userScrolled is true and also check if
// the item is end then update recycler view and set
// userScrolled to false
if (userScrolled
&& (visibleItemCount + pastVisiblesItems) == totalItemCount) {
userScrolled = false;
RefreshData(oldestPostId);
}
}
});
}
答案 1 :(得分:0)
Firebase具有FirebaseRecyclerAdapter,用于将RecyclerView直接连接到firebase数据库。有关详细信息,请参阅Google的FriendlyChat示例应用:https://github.com/firebase/friendlychat
答案 2 :(得分:0)
你可以使用startAt(),endAt()和equalTo()方法,官方链接enter link description here
// Find all dinosaurs that are at least three meters tall.
var ref = firebase.database().ref("dinosaurs");
ref.orderByChild("height").startAt(3).on("child_added", function(snapshot) {
console.log(snapshot.key)
});