Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 使用回收视图从firebase检索实时数据_Android_Firebase Realtime Database - Fatal编程技术网

Android 使用回收视图从firebase检索实时数据

Android 使用回收视图从firebase检索实时数据,android,firebase-realtime-database,Android,Firebase Realtime Database,我想检索循环视图中请求类型为“received”的唯一子级,但我有一个问题:检索当前用户中请求类型为“sent”和“received”的所有子级 这是我的代码 public class RequestFragment extends Fragment { private View requestview; private RecyclerView requestlist; private DatabaseReference requestref,userref;

我想检索循环视图中请求类型为“received”的唯一子级,但我有一个问题:检索当前用户中请求类型为“sent”和“received”的所有子级


这是我的代码

public class RequestFragment extends Fragment {
    private  View requestview;
    private RecyclerView requestlist;
    private DatabaseReference requestref,userref;
    private FirebaseAuth mAuth;
    private String currentuserID;


    public RequestFragment() {

    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        requestview = inflater.inflate(R.layout.fragment_request, container, false);

        requestlist = requestview.findViewById(R.id.requestlist);
        requestlist.setLayoutManager(new LinearLayoutManager(getContext()));

        mAuth = FirebaseAuth.getInstance();
        currentuserID = mAuth.getCurrentUser().getUid();
        requestref = FirebaseDatabase.getInstance().getReference().child("chat request");

        userref = FirebaseDatabase.getInstance().getReference().child("users");


        return requestview;
    }

    @Override
    public void onStart() {
        super.onStart();

        FirebaseRecyclerOptions options =
                new FirebaseRecyclerOptions.Builder<contact>()
                        .setQuery(requestref.child(currentuserID),contact.class)
                        .build();

        FirebaseRecyclerAdapter<contact,RequestViewHolder> adapter =
                new FirebaseRecyclerAdapter<contact, RequestViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull final RequestViewHolder holder, int position, @NonNull contact model)
                    {
                        holder.itemView.findViewById(R.id.request_accept_btn).setVisibility(View.VISIBLE);
                        holder.itemView.findViewById(R.id.request_cancle_btn).setVisibility(View.VISIBLE);

                        final  String list_user_id = getRef(position).getKey();

                        DatabaseReference getTypeRef = getRef(position).child("request_type").getRef();

                        getTypeRef.addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                                if (dataSnapshot.exists()){

                                    String type = dataSnapshot.getValue().toString();

                                    if (type.equals("received"))
                                    {
                                        userref.child(list_user_id).addValueEventListener(new ValueEventListener() {
                                            @Override
                                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                                                if (dataSnapshot.hasChild("image")){

                                                    String profile = dataSnapshot.child("image").getValue().toString();
                                                    String userstatus = dataSnapshot.child("status").getValue().toString();
                                                    String username = dataSnapshot.child("name").getValue().toString();

                                                    holder.username.setText(username);
                                                    holder.userstatus.setText(userstatus);
                                                    Picasso.get().load(profile).placeholder(R.drawable.defaultprofile).into(holder.userimage);

                                                }
                                                else {

                                                    String userstatus = dataSnapshot.child("status").getValue().toString();
                                                    String username = dataSnapshot.child("name").getValue().toString();

                                                    holder.username.setText(username);
                                                    holder.userstatus.setText(userstatus);


                                                }

                                            }

                                            @Override
                                            public void onCancelled(@NonNull DatabaseError databaseError) {

                                            }
                                        });


                                    }



                                }

                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError databaseError) {

                            }
                        });

                    }

                    @NonNull
                    @Override
                    public RequestViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
                        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.user_display_layout,viewGroup,false);
                        RequestViewHolder requestViewHolder = new RequestViewHolder(view);
                        return requestViewHolder;
                    }
                };
        requestlist.setAdapter(adapter);
        adapter.startListening();




    }


    public  static class RequestViewHolder extends RecyclerView.ViewHolder
    {
        TextView username,userstatus;
        CircleImageView userimage;
        Button accept,cancle;

        public RequestViewHolder(@NonNull View itemView)
        {
            super(itemView);
            username = itemView.findViewById(R.id.user_profile_name);
            userstatus = itemView.findViewById(R.id.user_status);
            userimage = itemView.findViewById(R.id.user_profile_image);
            accept = itemView.findViewById(R.id.request_accept_btn);
            cancle = itemView.findViewById(R.id.request_cancle_btn);



        }
    }


} 
公共类RequestFragment扩展了片段{
私有视图请求视图;
私有RecyclerView请求列表;
私有数据库引用requestref,userref;
私人消防队;
私有字符串currentuserID;
公共请求片段(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
requestview=充气机。充气(R.layout.fragment\u请求,容器,false);
requestlist=requestview.findViewById(R.id.requestlist);
setLayoutManager(新的LinearLayoutManager(getContext());
mAuth=FirebaseAuth.getInstance();
currentuserID=mAuth.getCurrentUser().getUid();
requestref=FirebaseDatabase.getInstance().getReference().child(“聊天请求”);
userref=FirebaseDatabase.getInstance().getReference().child(“用户”);
返回请求视图;
}
@凌驾
public void onStart(){
super.onStart();
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(requestref.child(currentuserID),contact.class)
.build();
FirebaseRecyclerAdapter适配器=
新FirebaseRecyclerAdapter(选件){
@凌驾
受保护的无效onBindViewHolder(@NonNull final RequestViewHolder holder,int position,@NonNull联系人模型)
{
holder.itemView.findviewbyd(R.id.request\u accept\u btn).setVisibility(View.VISIBLE);
holder.itemView.findviewbyd(R.id.request\u cancle\u btn).setVisibility(View.VISIBLE);
最终字符串列表_user_id=getRef(position).getKey();
DatabaseReference getTypeRef=getRef(position).child(“请求类型”).getRef();
getTypeRef.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.exists()){
字符串类型=dataSnapshot.getValue().toString();
if(类型等于(“接收”))
{
userref.child(list\u user\u id).addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.hasChild(“图像”)){
字符串配置文件=dataSnapshot.child(“image”).getValue().toString();
字符串userstatus=dataSnapshot.child(“status”).getValue().toString();
字符串username=dataSnapshot.child(“name”).getValue().toString();
holder.username.setText(用户名);
holder.userstatus.setText(userstatus);
Picasso.get().load(profile).placeholder(R.drawable.defaultprofile).into(holder.userimage);
}
否则{
字符串userstatus=dataSnapshot.child(“status”).getValue().toString();
字符串username=dataSnapshot.child(“name”).getValue().toString();
holder.username.setText(用户名);
holder.userstatus.setText(userstatus);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
@非空
@凌驾
public RequestViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int viewType){
View View=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.user\u display\u布局,viewGroup,false);
RequestViewHolder RequestViewHolder=新的RequestViewHolder(视图);
退票人;
}
};
setAdapter(适配器);
adapter.startListening();
}
公共静态类RequestViewHolder扩展了RecyclerView.ViewHolder
{
TextView用户名、userstatus;
CircleImageView用户图像;
按钮接受,取消;
public RequestViewHolder(@NonNull View itemView)
{
超级(项目视图);
username=itemView.findviewbyd(R.id.user\u profile\u name);
userstatus=itemView.findviewbyd(R.id.user\u status);
userimage=itemView.findView
//Creating query for specific condition
Query queryRequestType = requestref.orderByChild("request_type").equalTo("received");

FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<contact>()
    .setQuery(queryRequestType, contact.class)
    .build();