Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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
Java Firebase数据库查询未显示在屏幕上_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Firebase数据库查询未显示在屏幕上

Java Firebase数据库查询未显示在屏幕上,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有一个类,我在其中显示用户拥有的朋友列表。但是,当我尝试运行此操作时,RecylerView不会向当前用户显示他们的好友 朋友片段 import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import andr

我有一个类,我在其中显示用户拥有的朋友列表。但是,当我尝试运行此操作时,RecylerView不会向当前用户显示他们的好友

朋友片段

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.widget.AlertDialogLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;

import de.hdodenhof.circleimageview.CircleImageView;


/**
 * A simple {@link Fragment} subclass.
 */
public class FriendsFragment extends Fragment {


    private RecyclerView mFriendsList;
    private DatabaseReference mFriendsDatabase;
    private DatabaseReference mUsersDatabase;
    private FirebaseAuth mAuth;
    private String mCurrent_user_id;
    private View mMainView;


    public FriendsFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment
        mMainView = inflater.inflate(R.layout.fragment_friends, container, false);
        mAuth = FirebaseAuth.getInstance();
        mCurrent_user_id = mAuth.getCurrentUser().getUid();
        mFriendsDatabase = FirebaseDatabase.getInstance().getReference().child("Friends").child(mCurrent_user_id);
        mUsersDatabase= FirebaseDatabase.getInstance().getReference().child("Users");
        mFriendsList= (RecyclerView)mMainView.findViewById(R.id.friends_list);
        mFriendsList.setHasFixedSize(true);
        mFriendsList.setLayoutManager(new LinearLayoutManager(getContext()));
        mFriendsDatabase.keepSynced(true);


        return mMainView;
    }

    public void onStart() {
        super.onStart();
        startListening();

    }
        public void startListening() {

            Query queryFriends = FirebaseDatabase.getInstance()
                    .getReference()
                    .child("Friends")
                    .child(mCurrent_user_id)
                    .limitToLast(50);

           FirebaseRecyclerOptions<Friends> options =
                    new FirebaseRecyclerOptions.Builder<Friends>()
                            .setQuery(queryFriends, Friends.class)
                            .build();

           FirebaseRecyclerAdapter<Friends, FriendsViewHolder> friendsRecyclerViewAdapter = new FirebaseRecyclerAdapter<Friends, FriendsViewHolder>(options) {

                @NonNull
                @Override
                public FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                    View view = LayoutInflater.from(parent.getContext())
                            .inflate(R.layout.friends_single_layout, parent, false);

                    return new FriendsViewHolder(view);
                }

                @Override
                protected void onBindViewHolder(@NonNull final FriendsViewHolder holder, int position, @NonNull Friends model) {

                    holder.setDate(model.getDate());

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

                    mUsersDatabase.child(list_user_id).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            if (dataSnapshot.hasChild("online") && dataSnapshot.hasChild("name") && dataSnapshot.hasChild("thumb_image") && dataSnapshot.hasChild("status")) {
                                final String username = dataSnapshot.child("name").getValue().toString();
                                String userThumb = dataSnapshot.child("thumb_image").getValue().toString();
                                String userStatus = dataSnapshot.child("status").getValue().toString();
                                holder.setName(username);
                                holder.setUserImage(userThumb);
                                holder.setUserStatus(userStatus);
                                boolean userOnline = (boolean) dataSnapshot.child("online").getValue();
                                holder.setUserOnline(userOnline);
                                mUsersDatabase.keepSynced(true);
                                mFriendsDatabase.keepSynced(true);

                                holder.mView.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        CharSequence options[] = new CharSequence[]{"Open profile", "Send Message"};
                                        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
                                        builder.setTitle("Select Options");
                                        builder.setItems(options, new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                if (which == 0) {
                                                    Intent profileIntent = new Intent(getContext(), ProfileActivity.class);
                                                    profileIntent.putExtra("user_id", list_user_id);
                                                    startActivity(profileIntent);
                                                }
                                                if (which == 1) {
                                                    Intent chatIntent = new Intent(getContext(), ChatActivity.class);
                                                    chatIntent.putExtra("user_id", list_user_id);
                                                    chatIntent.putExtra("user_name", username);
                                                    mUsersDatabase.keepSynced(true);
                                                    mFriendsDatabase.keepSynced(true);
                                                    startActivity(chatIntent);

                                                }
                                            }
                                        });
                                        builder.show();
                                    }
                                });
                            }
                        }
                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                }

            };




            mFriendsList.setAdapter(friendsRecyclerViewAdapter);
            friendsRecyclerViewAdapter.startListening();
        }

            public static class FriendsViewHolder extends RecyclerView.ViewHolder {
            View mView;
                public FriendsViewHolder(View itemView) {
                    super(itemView);
                    mView = itemView;
                }
                public void setDate(String date){
                    TextView userStatusView = (TextView) mView.findViewById(R.id.user_single_status);
                    userStatusView.setText(date);
                }

                public void setName(String name){
                    TextView userNameView= (TextView)mView.findViewById(R.id.user_single_name);
                    userNameView.setText(name);
                }
                public void setUserImage(String thumb_image){
                    CircleImageView userImageView = (CircleImageView) mView.findViewById(R.id.user_single_image);
                    Picasso.get().load(thumb_image).placeholder(R.drawable.accountpicture).into(userImageView);
                }
                public void setUserStatus(String status){
                    TextView userStatView= (TextView)mView.findViewById(R.id.user_single_status);
                    userStatView.setText(status);
                }
                public void setUserOnline(boolean online_status){
                    ImageView userOnlineView= (ImageView) mView.findViewById(R.id.user_single_online_icon);
                    ImageView userOffilneView= (ImageView) mView.findViewById(R.id.user_single_offline_icon);
                    if(online_status){
                        userOnlineView.setVisibility(View.VISIBLE);
                        userOffilneView.setVisibility(View.INVISIBLE);

                    }
                    else{
                        userOnlineView.setVisibility(View.INVISIBLE);
                        userOffilneView.setVisibility(View.VISIBLE);
                    }
                }



        }

    }
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.annotation.NonNull;
导入android.support.v4.app.Fragment;
导入android.support.v7.widget.AlertDialogLayout;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.firebase.ui.database.FirebaseRecyclerAdapter;
导入com.firebase.ui.database.FirebaseRecyclerOptions;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.Query;
导入com.google.firebase.database.ValueEventListener;
导入com.squareup.picasso.picasso;
导入de.hdodenhof.circleimageview.circleimageview;
/**
*一个简单的{@link Fragment}子类。
*/
公共类FriendsFragment扩展了片段{
私人回收网站;
私有数据库参考mFriendsDatabase;
私有数据库参考mUsersDatabase;
私人消防队;
私有字符串mCurrent\u user\u id;
私人视图;
公益碎片(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
mMainView=充气机。充气(R.layout.fragment\u friends,container,false);
mAuth=FirebaseAuth.getInstance();
mCurrent_user_id=mAuth.getCurrentUser().getUid();
mfriendsddatabase=FirebaseDatabase.getInstance().getReference().child(“朋友”).child(mCurrent\u user\u id);
mUsersDatabase=FirebaseDatabase.getInstance().getReference().child(“用户”);
mFriendsList=(RecyclerView)mMainView.findViewById(R.id.friends\u列表);
mFriendsList.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(getContext());
mFriendsDatabase.keepSynced(true);
返回视图;
}
public void onStart(){
super.onStart();
惊人的倾听();
}
公营机构{
查询queryFriends=FirebaseDatabase.getInstance()
.getReference()
.儿童(“朋友”)
.child(当前用户id)
.limitToLast(50);
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(queryFriends,Friends.class)
.build();
FirebaseRecyclerAdapter好友RecycleServiceAdapter=新的FirebaseRecyclerAdapter(选项){
@非空
@凌驾
public FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.friends\u single\u layout,parent,false);
返回新的FriendsViewHolder(视图);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull final FriendsViewHolder holder,int position,@NonNull Friends model){
holder.setDate(model.getDate());
最终字符串列表_user_id=getRef(position).getKey();
mUsersDatabase.child(list\u user\u id).addValueEventListener(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.hasChild(“联机”)&&dataSnapshot.hasChild(“名称”)&&dataSnapshot.hasChild(“拇指图像”)&&dataSnapshot.hasChild(“状态”)){
最终字符串username=dataSnapshot.child(“name”).getValue().toString();
字符串userThumb=dataSnapshot.child(“thumb_image”).getValue().toString();
字符串userStatus=dataSnapshot.child(“status”).getValue().toString();
holder.setName(用户名);
holder.setUserImage(userThumb);
holder.setUserStatus(用户状态);
boolean userOnline=(boolean)dataSnapshot.child(“online”).getValue();
holder.setUserOnline(userOnline);
mUsersDatabase.keepSynced(true);
mFriendsDatabase.keepSynced(true);
holder.mView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
CharSequence选项[]=新的CharSequence[]{“打开配置文件”,“发送消息”};
AlertDialog.Builder=新建AlertDialog.Builder(getContext());
builder.setTitle(“选择选项”);
setItems(选项,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
if(which==0){