Android Firebase在滚动时动态加载数据

Android Firebase在滚动时动态加载数据,android,firebase,android-recyclerview,firebase-realtime-database,android-scrollview,Android,Firebase,Android Recyclerview,Firebase Realtime Database,Android Scrollview,我需要知道如何在使用Firebase滚动时动态加载数据。如果我使用Firebase查询数据,则所有数据必须加载一次,或始终加载数据更改。我想用Firebase按限制加载数据,达到此限制后,加载越来越多的数据 它基本上就像Facebook的时间线——作为一个社交网络 例如:我想从Firebase获取限制为50的最新记录。达到此限制后,我将下载接下来的50个数据。我想使用RecyclerView而不是FirebaseRecycler类 FirebaseRecyclerAdapter无法解决我的问题。

我需要知道如何在使用Firebase滚动时动态加载数据。如果我使用Firebase查询数据,则所有数据必须加载一次,或始终加载数据更改。我想用Firebase按限制加载数据,达到此限制后,加载越来越多的数据

它基本上就像Facebook的时间线——作为一个社交网络

例如:我想从Firebase获取限制为50的最新记录。达到此限制后,我将下载接下来的50个数据。我想使用
RecyclerView
而不是
FirebaseRecycler


FirebaseRecyclerAdapter无法解决我的问题。谢谢你的帮助。事实上,我需要加载点视图布局的facebook时间线等数据,并加载点视图数据库的Firebase数据(50到50。下载50个数据,达到限制,将底部布局的更多数据加载到50)


您能帮助我吗?

Firebase具有FirebaseRecyclerAdapter,用于将RecyclerView直接连接到Firebase数据库。有关详细信息,请参阅谷歌的FriendlyChat示例应用程序:

您可以使用startAt()、endAt()和equalTo()方法,即官方链接

答复:

这很好用。


你尝试过什么,在这里分享,这样人们可以帮助你…@sushildlh我什么都不尝试,但我知道如何用Firebase加载数据。然而,我不知道如何在滚动和Firebase上动态加载数据。这个问题不需要不理解的代码。FirebaseRecyclerAdapter的可能重复无法解决我的问题。谢谢你的帮助。事实上,我需要加载点视图布局的facebook时间线等数据,并加载点视图数据库的Firebase数据(50到50。下载50个数据,达到限制,将底部布局的更多数据加载到50)。
// 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)
});
    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);
                }
            }
        });
}