Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 升级到FirebaseUI 3.0后无法使用FirebaseRecyclerOptions检索数据_Android_Firebase_Firebase Realtime Database_Android Recyclerview_Firebaseui - Fatal编程技术网

Android 升级到FirebaseUI 3.0后无法使用FirebaseRecyclerOptions检索数据

Android 升级到FirebaseUI 3.0后无法使用FirebaseRecyclerOptions检索数据,android,firebase,firebase-realtime-database,android-recyclerview,firebaseui,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Firebaseui,我正在使用FirebaseRecyclerOptions,因为我升级到了新的FirebaseUI 3.0版本,但现在无法从数据库中检索任何内容。在旧的firebaserecylcAdapter方法中,同样的代码也可以很好地工作。似乎它甚至没有在BindViewHolder上输入 初始化 linearLayoutManager = new LinearLayoutManager(this); linearLayoutManager.setReverseLayout(true);

我正在使用
FirebaseRecyclerOptions
,因为我升级到了新的FirebaseUI 3.0版本,但现在无法从数据库中检索任何内容。在旧的
firebaserecylcAdapter
方法中,同样的代码也可以很好地工作。似乎它甚至没有在BindViewHolder上输入

初始化

linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setReverseLayout(true);
        linearLayoutManager.setStackFromEnd(true);
        recyclerView = findViewById(R.id.main_recycler);
        recyclerView.hasFixedSize();
        recyclerView.setLayoutManager(linearLayoutManager);    
queryDatbase = mDatabase.child("chatlist").child(cUser);
        queryDatbase.keepSynced(true);
Query query = queryDatbase.orderByChild("time");
        query.keepSynced(true);
FirebaseRecyclerAdapter代码

firebaseoptions = new FirebaseRecyclerOptions.Builder<ConvModel>().setQuery(query,ConvModel.class).build();

    firebaseadapter = new FirebaseRecyclerAdapter<ConvModel, ChatlistHolder>(firebaseoptions) {
        @Override
        protected void onBindViewHolder(final ChatlistHolder holder, int position,final ConvModel model) {
            final String each_user_id = firebaseadapter.getRef(position).getKey();
            Toast.makeText(MainActivity.this, each_user_id, Toast.LENGTH_SHORT).show();
            //region SET EACH USER IMAGE and USERNAME
            assert each_user_id != null;
            mDatabase.child("users").child(each_user_id).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    String dp = dataSnapshot.child("dp").getValue(String.class);
                    final String name = dataSnapshot.child("name").getValue(String.class);
                    holder.setName(name);
                    holder.setDp(dp,getApplicationContext());
                    // region OPEN CHAT ACTIVITY
                    holder.mView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            //open other activity

                        }
                    }); 
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(getApplicationContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
                }
            });//endregion
        }

        @Override
        public ChatlistHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.chatlist_single_item_layout,parent,false);
            return new ChatlistHolder(v);
        }
    };
    recyclerView.setAdapter(firebaseadapter);
firebaseoptions=new FirebaseRecyclerOptions.Builder().setQuery(query,ConvModel.class).build();
firebaseadapter=新的FirebaseRecyclerAdapter(firebaseoptions){
@凌驾
受保护的无效onBindViewHolder(最终ChatlistHolder、int位置、最终ConvModel){
最后一个字符串each_user_id=firebaseadapter.getRef(position.getKey();
Toast.makeText(MainActivity.this,each_user_id,Toast.LENGTH_SHORT).show();
//区域设置每个用户图像和用户名
断言每个用户id!=null;
mDatabase.child(“用户”).child(每个用户的id).addValueEventListener(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
String dp=dataSnapshot.child(“dp”).getValue(String.class);
最终字符串名=dataSnapshot.child(“name”).getValue(String.class);
持有人名称(名称);
setDp(dp,getApplicationContext());
//区域开放聊天活动
holder.mView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//开展其他活动
}
}); 
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Toast.makeText(getApplicationContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
}
});//结束区域
}
@凌驾
public ChatlistHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.chatlist\u single\u item\u布局,parent,false);
返回新的聊天列表持有者(v);
}
};
recyclerView.setAdapter(firebaseadapter);

自FirebaseUI 3.0版以来,您需要显式调用适配器,以指示它开始/停止从数据库检索数据

从指南中:

适配器生命周期-在以前的版本中,适配器开始侦听 实例化后立即执行,并调用
cleanup()
停止 听。在3.x中,必须显式调用
startListening()
stopListening()
或将
LifecycleOwner
传递给选项生成器


欢迎回到格里姆索尔!;)@我没注意到,谢谢!很高兴你回来:)