RecyclerView不会在首次启动时从Firebase加载数据 [英] RecyclerView does not load data from Firebase on first launch

查看:175
本文介绍了RecyclerView不会在首次启动时从Firebase加载数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从 Firebase 获取数据,但是 RecyclerView 并未在首次启动时显示该数据。它显示数据,当我再次打开活动。

在我的主要活动 -

  databaseReference = FirebaseDatabase.getInstance()。getReference(data)。child(childdata); 
recyclerView =(RecyclerView)findViewById(R.id.recyclerviews);
recyclerView.setHasFixedSize(true);
recyclerAdapter = new DisplayRecyclerAdapter(list,this);
recyclerView.setLayoutManager(新的LinearLayoutManager(this));
recyclerView.setAdapter(recyclerAdapter);
recyclerAdapter.notifyDataSetChanged();
loadRecyclerData();

$ b private void loadRecyclerData(){
databaseReference.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
(DataSnapshot postSnapshot:dataSnapshot.getChildren()){
String da = postSnapshot.getValue()。toString();
list.add(da);
}
});


解决方案

$ c $> onDataChange 导致您的列表正在更新那里

  databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
for(DataSnapshot postSnapshot:dataSnapshot.getChildren()){
String da = postSnapshot.getValue()。toString( );
list.add(da);
}
recyclerAdapter.notifyDataSetChanged();
}
)};


I am getting data from Firebase but RecyclerView is not showing that data on first launch. It displays the data when I open the activity again.

In my main activity-

databaseReference = FirebaseDatabase.getInstance().getReference("data").child("childdata");
    recyclerView = (RecyclerView)findViewById(R.id.recyclerviews);
    recyclerView.setHasFixedSize(true);
    recyclerAdapter = new DisplayRecyclerAdapter(list,this);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(recyclerAdapter );
    recyclerAdapter.notifyDataSetChanged();
    loadRecyclerData();
}

private void loadRecyclerData() {
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                String da = postSnapshot.getValue().toString();
                list.add(da);
        }
    });
}

解决方案

Notify adapter inside onDataChange cause your list is getting updated there

databaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot postSnapshot:dataSnapshot.getChildren()) {
            String da = postSnapshot.getValue().toString();
            list.add(da);
        }
        recyclerAdapter.notifyDataSetChanged(); 
    }
)};

这篇关于RecyclerView不会在首次启动时从Firebase加载数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆