Firebase数据库异常:Can';t将java.lang.String类型的对象转换为

Firebase数据库异常:Can';t将java.lang.String类型的对象转换为,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,在我的LapitChat应用程序中获取此错误。我无法解决这个问题,我试图找出许多解决方法,但我无法解决这个问题。我用model和db image添加了我的类代码 我的火基结构是 单击好友片段时出现错误 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.divyanshi.chatapp, PID: 29577 com.google.firebase.database.DatabaseException: Can't con

在我的LapitChat应用程序中获取此错误。我无法解决这个问题,我试图找出许多解决方法,但我无法解决这个问题。我用model和db image添加了我的类代码

我的火基结构是

单击好友片段时出现错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.divyanshi.chatapp, PID: 29577
    com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.divyanshi.chatapp.model.Friends
        at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(CustomClassMapper.java:436)
        at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(CustomClassMapper.java:232)
        at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(CustomClassMapper.java:80)
        at com.google.firebase.database.DataSnapshot.getValue(DataSnapshot.java:203)
        at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:29)
        at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:15)
        at com.firebase.ui.common.BaseCachingSnapshotParser.parseSnapshot(BaseCachingSnapshotParser.java:36)
        at com.firebase.ui.common.BaseObservableSnapshotArray.get(BaseObservableSnapshotArray.java:52)
        at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:109)
        at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:149)
        at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
        at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
        at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
        at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
        at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
        at androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1897)
        at androidx.recyclerview.widget.RecyclerView$1.run(RecyclerView.java:414)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
        at android.view.Choreographer.doCallbacks(Choreographer.java:761)
        at android.view.Choreographer.doFrame(Choreographer.java:693)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/Process: Sending signal. PID: 29577 SIG: 9
FriendsFragment.java

package com.divyanshi.chatapp.fragment;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.divyanshi.chatapp.R;
import com.divyanshi.chatapp.model.Friends;
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.ValueEventListener;
import com.squareup.picasso.Picasso;

import de.hdodenhof.circleimageview.CircleImageView;

public class FriendsFragment extends Fragment {

    private RecyclerView mFriendList;
    private FirebaseAuth mAuth;
    private DatabaseReference mFriendDatabase;
    private DatabaseReference mUserDatabase;
    String mCurrent_user_id;
    private View mMainView;

    public FriendsFragment(){

    }

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

        mMainView = inflater.inflate(R.layout.friends_fragment, container, false);
        mFriendList = mMainView.findViewById(R.id.friends_list);
        mAuth = FirebaseAuth.getInstance();

        mCurrent_user_id = mAuth.getCurrentUser().getUid();

        mFriendDatabase = FirebaseDatabase.getInstance().getReference().child("Friends").child(mCurrent_user_id);
        mUserDatabase = FirebaseDatabase.getInstance().getReference().child("users");

        mFriendList.setHasFixedSize(true);
        mFriendList.setLayoutManager(new LinearLayoutManager(getContext()));

        return mMainView;
    }

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

        FirebaseRecyclerOptions<Friends> friendsFirebaseRecyclerOptions =
                new FirebaseRecyclerOptions.Builder<Friends>()
                        .setQuery(mFriendDatabase, Friends.class)
                        .build();

        FirebaseRecyclerAdapter<Friends, FriendsViewHolder> adapter = new FirebaseRecyclerAdapter
                <Friends, FriendsFragment.FriendsViewHolder>(friendsFirebaseRecyclerOptions) {

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

                String list_user_id = getRef(position).getKey();
                mUserDatabase.child(list_user_id).addValueEventListener(new ValueEventListener() {

                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

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

                        holder.tv_usersSingle_username.setText(username);
                        holder.tv_usersSingle_status.setText(status);

                        if (!thumb_image.equals("default")) {
                            Picasso.with(getContext()).load(thumb_image).placeholder(R.mipmap.ic_launcher_round).into(holder.iv_usersSingle_image);
                        }

                        Log.d("Special", "I am log name" );
                    }

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

                    }
                });
            }

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

                return new FriendsViewHolder(view);
            }
        };

        mFriendList.setAdapter(adapter);
        adapter.startListening();
    }

    public static class FriendsViewHolder extends RecyclerView.ViewHolder {
        private TextView tv_usersSingle_username, tv_usersSingle_status;
        private CircleImageView iv_usersSingle_image;

        public FriendsViewHolder(@NonNull View itemView) {
            super(itemView);

            tv_usersSingle_username = itemView.findViewById(R.id.user_single_name);
            tv_usersSingle_status = itemView.findViewById(R.id.user_single_status);
            iv_usersSingle_image = itemView.findViewById(R.id.user_single_image);

        }



    }
}


ProfileActivity.java

package com.divyanshi.chatapp;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.ProgressDialog;
import android.os.Bundle;

import java.text.DateFormat;

import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
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.ValueEventListener;
import com.squareup.picasso.Picasso;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class ProfileActivity extends AppCompatActivity {

    private ImageView mProfileImage;
    private TextView mProfileName, mProfileStatus, mProfileFriendsCount;
    private Button mProfileSendReqBtn, nDeclineBtn;

    private DatabaseReference mUserDatabase;

    private ProgressDialog mProgressDialog;

    private DatabaseReference mFriendReqDatabase;
    private DatabaseReference mFriendsDatabase;
    private DatabaseReference mNotificationDatabase;
    private DatabaseReference mRootRef;

    private FirebaseUser mCurrent_user;

    private String mCurrent_State;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        final String user_id = getIntent().getStringExtra("user_id");

        mUserDatabase = FirebaseDatabase.getInstance().getReference().child("users").child(user_id);
        mFriendReqDatabase = FirebaseDatabase.getInstance().getReference().child("Friend_req");
        mNotificationDatabase = FirebaseDatabase.getInstance().getReference().child("notification");
        mCurrent_user = FirebaseAuth.getInstance().getCurrentUser();
        mFriendsDatabase = FirebaseDatabase.getInstance().getReference().child("Friends");
        mRootRef=FirebaseDatabase.getInstance().getReference();
        mProfileImage = (ImageView) findViewById(R.id.profile_image);
        mProfileName = (TextView) findViewById(R.id.profile_display_name);
        mProfileStatus = (TextView) findViewById(R.id.profile_status);
        mProfileFriendsCount = (TextView) findViewById(R.id.Profile_totalFrnds);
        mProfileSendReqBtn = (Button) findViewById(R.id.profile_SendReq);
        nDeclineBtn = (Button) findViewById(R.id.profile_Decline_reqBtn);


        mCurrent_State = "not_friends";


        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setTitle("Loading UserData");
        mProgressDialog.setMessage("Please wait while we load the data.");
        mProgressDialog.setCanceledOnTouchOutside(false);
        mProgressDialog.show();

        mUserDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                String display_name = snapshot.child("name").getValue().toString();
                String status = snapshot.child("status").getValue().toString();
                String image = snapshot.child("image").getValue().toString();

                mProfileName.setText(display_name);
                mProfileStatus.setText(status);

                Picasso.with(ProfileActivity.this).load(image).placeholder(R.drawable.default_avatar).into(mProfileImage);


                //-------FRIEND LIST /REQUEST FEATURE--------//

                mFriendReqDatabase.child(mCurrent_user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {

                        if (snapshot.hasChild(user_id)) {

                            String req_type = snapshot.child(user_id).child("request_type").getValue().toString();
                            if (req_type.equals("received")) {
                                mCurrent_State = "req_received";
                                mProfileSendReqBtn.setText("Accept Friend Request");
                                nDeclineBtn.setVisibility(View.VISIBLE);
                                nDeclineBtn.setEnabled(true);

                            } else if (req_type.equals("sent")) {
                                mCurrent_State = "Req_sent";
                                mProfileSendReqBtn.setText("Cancel Friend Request");

                                nDeclineBtn.setVisibility(View.INVISIBLE);
                                nDeclineBtn.setEnabled(false);
                            }
                            mProgressDialog.dismiss();


                        } else {
                            mFriendsDatabase.child(mCurrent_user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot snapshot) {
                                    if (snapshot.hasChild(user_id)) {

                                        mCurrent_State = "friends";
                                        mProfileSendReqBtn.setText("Unfriend this Person");

                                        nDeclineBtn.setVisibility(View.INVISIBLE);
                                        nDeclineBtn.setEnabled(false);
                                    }
                                    mProgressDialog.dismiss();

                                }

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


                                }
                            });
                        }

                    }

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

                    }
                });


            }

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

            }
        });

        mProfileSendReqBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mProfileSendReqBtn.setEnabled(false);

                // NOT FRIEND STATE//

                if (mCurrent_State.equals("not_friends")) {

                    mFriendReqDatabase.child(mCurrent_user.getUid()).child(user_id).child("request_type").setValue("sent").addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            if (task.isSuccessful()) {
                                mFriendReqDatabase.child(user_id).child(mCurrent_user.getUid()).child("request_type").setValue("received").addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {

                                        HashMap<String, String> notificationData = new HashMap<>();
                                        notificationData.put("from", mCurrent_user.getUid());
                                        notificationData.put("type", "request");

                                        mNotificationDatabase.child(user_id).push().setValue(notificationData).addOnSuccessListener(new OnSuccessListener<Void>() {
                                            @Override
                                            public void onSuccess(Void aVoid) {
                                                mCurrent_State = "Req_sent";

                                                mProfileSendReqBtn.setText("Cancel Friend Request");

                                                nDeclineBtn.setVisibility(View.INVISIBLE);
                                                nDeclineBtn.setEnabled(false);
                                            }
                                        });


                                        //   Toast.makeText(ProfileActivity.this, "Request Sent Successfully.", Toast.LENGTH_SHORT).show();
                                    }


                                });

                            } else {
                                Toast.makeText(ProfileActivity.this, "Failed to send the Request, Please try again.", Toast.LENGTH_SHORT).show();
                            }
                            mProfileSendReqBtn.setEnabled(true);
                        }
                    });

                }

                // Cancel the request //

                if (mCurrent_State.equals("Req_sent")) {

                    mFriendReqDatabase.child(mCurrent_user.getUid()).child(user_id).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {

                            mFriendReqDatabase.child(user_id).child(mCurrent_user.getUid()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    mProfileSendReqBtn.setEnabled(true);
                                    mCurrent_State = "not_friends";

                                    mProfileSendReqBtn.setText("Send Friend Request");
                                    nDeclineBtn.setVisibility(View.INVISIBLE);
                                    nDeclineBtn.setEnabled(false);


                                }
                            });


                        }
                    });
                }


                if (mCurrent_State.equals("req_received")){

                    final String currentDate=DateFormat.getDateTimeInstance().format(new Date());
                    Map friendMap = new HashMap();
                    friendMap.put("Friends/"+mCurrent_user.getUid()+"/"+user_id+"/date",currentDate);
                    friendMap.put("Friends/"+user_id+"/"+mCurrent_user.getUid()+"/date",currentDate);
                    friendMap.put("Friend_req/"+mCurrent_user.getUid()+"/"+user_id,null);
                    friendMap.put("Friend_req/"+user_id+"/"+mCurrent_user.getUid(),null);

                    mRootRef.updateChildren(friendMap, new DatabaseReference.CompletionListener() {
                        @Override
                        public void onComplete(@Nullable DatabaseError error, @NonNull DatabaseReference ref) {
                            mProfileSendReqBtn.setEnabled(true);
                            mCurrent_State = "friends";
                            mProfileSendReqBtn.setText("UnFriend this person");
                        }
                    });

                }
            }
        });

    }
}

package com.divyanshi.chatapp;
导入androidx.annotation.NonNull;
导入androidx.annotation.Nullable;
导入androidx.appcompat.app.appcompat活动;
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入java.text.DateFormat;
导入android.view.view;
导入android.widget.Button;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.OnSuccessListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入com.squareup.picasso.picasso;
导入java.util.Date;
导入java.util.HashMap;
导入java.util.Map;
公共类ProfileActivity扩展了AppCompatActivity{
私有图像查看mProfileImage;
私有文本查看mProfileName、mProfileStatus、mProfileFriendsCount;
专用按钮mProfileSendReqBtn,nDeclineBtn;
私人数据库参考博物馆数据库;
private ProgressDialog mProgressDialog;
私有数据库参考mFriendReqDatabase;
私有数据库参考mFriendsDatabase;
私有数据库参考通知数据库;
私有数据库参考mRootRef;
私有FirebaseUser MCU用户;
私有字符串MCU状态;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
最终字符串user_id=getIntent().getStringExtra(“user_id”);
mUserDatabase=FirebaseDatabase.getInstance().getReference().child(“用户”).child(用户id);
mFriendReqDatabase=FirebaseDatabase.getInstance().getReference().child(“Friend_req”);
mNotificationDatabase=FirebaseDatabase.getInstance().getReference().child(“通知”);
mCurrent_user=FirebaseAuth.getInstance().getCurrentUser();
mfriendsddatabase=FirebaseDatabase.getInstance().getReference().child(“朋友”);
mRootRef=FirebaseDatabase.getInstance().getReference();
mProfileImage=(ImageView)findViewById(R.id.profile\u图像);
mProfileName=(TextView)findViewById(R.id.profile\u display\u name);
mProfileStatus=(TextView)findViewById(R.id.profile\u status);
mProfileFriendsCount=(TextView)findViewById(R.id.Profile_totalFrnds);
mProfileSendReqBtn=(按钮)findViewById(R.id.profile\u SendReq);
nDeclineBtn=(按钮)findViewById(R.id.profile\u Decline\u reqBtn);
mccurrent_State=“不是朋友”;
mProgressDialog=新建进度对话框(此);
setTitle(“加载用户数据”);
setMessage(“请稍候,我们正在加载数据。”);
mProgressDialog.setCanceledOnTouchOutside(false);
mProgressDialog.show();
mUserDatabase.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
字符串display_name=snapshot.child(“name”).getValue().toString();
字符串状态=snapshot.child(“status”).getValue().toString();
字符串image=snapshot.child(“image”).getValue().toString();
mProfileName.setText(显示名称);
mProfileStatus.setText(状态);
毕加索.with(ProfileActivity.this).load(image).placeholder(R.drawable.default_avatar).into(mProfileImage);
//-------好友列表/请求功能--------//
mFriendReqDatabase.child(mCurrent_user.getUid()).addListenerForSingleValueEvent(新值EventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
if(snapshot.hasChild(用户id)){
String req_type=snapshot.child(用户id).child(“请求类型”).getValue().toString();
如果(请求类型等于(“接收”)){
mCurrent_State=“收到请求”;
mProfileSendReqBtn.setText(“接受好友请求”);
nDeclineBtn.setVisibility(视图可见);
nDeclineBtn.setEnabled(真);
}else if(请求类型等于(“已发送”){
mcCurrent_State=“请求已发送”;
mProfileSendReqBtn.setText(“取消好友请求”);
nDeclineBtn.setVisibility(视图不可见);
nDeclineBtn.setEnabled(假);
}
mProgressDialog.disclose();
}否则{
mFriendsDatabase.child(mcCurrent_user.getUid()).addListenerForSingleValueEvent(新值EventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
if(snapshot.hasChild(用户id)){
mCurrent_State=“朋友”;
mProfileSendReqBtn.setText(“解除此人的朋友关系”);
非临床
package com.divyanshi.chatapp;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.ProgressDialog;
import android.os.Bundle;

import java.text.DateFormat;

import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
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.ValueEventListener;
import com.squareup.picasso.Picasso;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class ProfileActivity extends AppCompatActivity {

    private ImageView mProfileImage;
    private TextView mProfileName, mProfileStatus, mProfileFriendsCount;
    private Button mProfileSendReqBtn, nDeclineBtn;

    private DatabaseReference mUserDatabase;

    private ProgressDialog mProgressDialog;

    private DatabaseReference mFriendReqDatabase;
    private DatabaseReference mFriendsDatabase;
    private DatabaseReference mNotificationDatabase;
    private DatabaseReference mRootRef;

    private FirebaseUser mCurrent_user;

    private String mCurrent_State;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        final String user_id = getIntent().getStringExtra("user_id");

        mUserDatabase = FirebaseDatabase.getInstance().getReference().child("users").child(user_id);
        mFriendReqDatabase = FirebaseDatabase.getInstance().getReference().child("Friend_req");
        mNotificationDatabase = FirebaseDatabase.getInstance().getReference().child("notification");
        mCurrent_user = FirebaseAuth.getInstance().getCurrentUser();
        mFriendsDatabase = FirebaseDatabase.getInstance().getReference().child("Friends");
        mRootRef=FirebaseDatabase.getInstance().getReference();
        mProfileImage = (ImageView) findViewById(R.id.profile_image);
        mProfileName = (TextView) findViewById(R.id.profile_display_name);
        mProfileStatus = (TextView) findViewById(R.id.profile_status);
        mProfileFriendsCount = (TextView) findViewById(R.id.Profile_totalFrnds);
        mProfileSendReqBtn = (Button) findViewById(R.id.profile_SendReq);
        nDeclineBtn = (Button) findViewById(R.id.profile_Decline_reqBtn);


        mCurrent_State = "not_friends";


        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setTitle("Loading UserData");
        mProgressDialog.setMessage("Please wait while we load the data.");
        mProgressDialog.setCanceledOnTouchOutside(false);
        mProgressDialog.show();

        mUserDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                String display_name = snapshot.child("name").getValue().toString();
                String status = snapshot.child("status").getValue().toString();
                String image = snapshot.child("image").getValue().toString();

                mProfileName.setText(display_name);
                mProfileStatus.setText(status);

                Picasso.with(ProfileActivity.this).load(image).placeholder(R.drawable.default_avatar).into(mProfileImage);


                //-------FRIEND LIST /REQUEST FEATURE--------//

                mFriendReqDatabase.child(mCurrent_user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {

                        if (snapshot.hasChild(user_id)) {

                            String req_type = snapshot.child(user_id).child("request_type").getValue().toString();
                            if (req_type.equals("received")) {
                                mCurrent_State = "req_received";
                                mProfileSendReqBtn.setText("Accept Friend Request");
                                nDeclineBtn.setVisibility(View.VISIBLE);
                                nDeclineBtn.setEnabled(true);

                            } else if (req_type.equals("sent")) {
                                mCurrent_State = "Req_sent";
                                mProfileSendReqBtn.setText("Cancel Friend Request");

                                nDeclineBtn.setVisibility(View.INVISIBLE);
                                nDeclineBtn.setEnabled(false);
                            }
                            mProgressDialog.dismiss();


                        } else {
                            mFriendsDatabase.child(mCurrent_user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot snapshot) {
                                    if (snapshot.hasChild(user_id)) {

                                        mCurrent_State = "friends";
                                        mProfileSendReqBtn.setText("Unfriend this Person");

                                        nDeclineBtn.setVisibility(View.INVISIBLE);
                                        nDeclineBtn.setEnabled(false);
                                    }
                                    mProgressDialog.dismiss();

                                }

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


                                }
                            });
                        }

                    }

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

                    }
                });


            }

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

            }
        });

        mProfileSendReqBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mProfileSendReqBtn.setEnabled(false);

                // NOT FRIEND STATE//

                if (mCurrent_State.equals("not_friends")) {

                    mFriendReqDatabase.child(mCurrent_user.getUid()).child(user_id).child("request_type").setValue("sent").addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            if (task.isSuccessful()) {
                                mFriendReqDatabase.child(user_id).child(mCurrent_user.getUid()).child("request_type").setValue("received").addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {

                                        HashMap<String, String> notificationData = new HashMap<>();
                                        notificationData.put("from", mCurrent_user.getUid());
                                        notificationData.put("type", "request");

                                        mNotificationDatabase.child(user_id).push().setValue(notificationData).addOnSuccessListener(new OnSuccessListener<Void>() {
                                            @Override
                                            public void onSuccess(Void aVoid) {
                                                mCurrent_State = "Req_sent";

                                                mProfileSendReqBtn.setText("Cancel Friend Request");

                                                nDeclineBtn.setVisibility(View.INVISIBLE);
                                                nDeclineBtn.setEnabled(false);
                                            }
                                        });


                                        //   Toast.makeText(ProfileActivity.this, "Request Sent Successfully.", Toast.LENGTH_SHORT).show();
                                    }


                                });

                            } else {
                                Toast.makeText(ProfileActivity.this, "Failed to send the Request, Please try again.", Toast.LENGTH_SHORT).show();
                            }
                            mProfileSendReqBtn.setEnabled(true);
                        }
                    });

                }

                // Cancel the request //

                if (mCurrent_State.equals("Req_sent")) {

                    mFriendReqDatabase.child(mCurrent_user.getUid()).child(user_id).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {

                            mFriendReqDatabase.child(user_id).child(mCurrent_user.getUid()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    mProfileSendReqBtn.setEnabled(true);
                                    mCurrent_State = "not_friends";

                                    mProfileSendReqBtn.setText("Send Friend Request");
                                    nDeclineBtn.setVisibility(View.INVISIBLE);
                                    nDeclineBtn.setEnabled(false);


                                }
                            });


                        }
                    });
                }


                if (mCurrent_State.equals("req_received")){

                    final String currentDate=DateFormat.getDateTimeInstance().format(new Date());
                    Map friendMap = new HashMap();
                    friendMap.put("Friends/"+mCurrent_user.getUid()+"/"+user_id+"/date",currentDate);
                    friendMap.put("Friends/"+user_id+"/"+mCurrent_user.getUid()+"/date",currentDate);
                    friendMap.put("Friend_req/"+mCurrent_user.getUid()+"/"+user_id,null);
                    friendMap.put("Friend_req/"+user_id+"/"+mCurrent_user.getUid(),null);

                    mRootRef.updateChildren(friendMap, new DatabaseReference.CompletionListener() {
                        @Override
                        public void onComplete(@Nullable DatabaseError error, @NonNull DatabaseReference ref) {
                            mProfileSendReqBtn.setEnabled(true);
                            mCurrent_State = "friends";
                            mProfileSendReqBtn.setText("UnFriend this person");
                        }
                    });

                }
            }
        });

    }
}

    com.google.firebase.database.DatabaseException: Can't convert object of
    type java.lang.String to type com.divyanshi.chatapp.model.Friends
String username = dataSnapshot.child("name").getValue().toString();
String status = dataSnapshot.child("status").getValue().toString();
String thumb_image = dataSnapshot.child("thumb_image").getValue().toString();
@Override
protected void onBindViewHolder(final FriendsViewHolder holder, int position, @NonNull Friends model) {

    String list_user_id = getRef(position).getKey();
    mUserDatabase.child(list_user_id).addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            
            for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
                Friends friend = singleSnapshot.getValue(Friends.class);
                String username = friend.getName();
                String status = friend.getStatus();
                String thumb_image = friend.getImage();

                holder.tv_usersSingle_username.setText(username);
                holder.tv_usersSingle_status.setText(status);

                if (!thumb_image.equals("default")) {
                    Picasso.with(getContext()).load(thumb_image).placeholder(R.mipmap.ic_launcher_round).into(holder.iv_usersSingle_image);
                }

                Log.d("Special", "I am log name" );                 
            }
            
        }

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

        }
    });
}
mFriendDatabase = FirebaseDatabase.getInstance().getReference().child("Friends").child(mCurrent_user_id);
mFriendDatabase = FirebaseDatabase.getInstance().getReference("/Friends");
FirebaseRecyclerOptions<Friends> friendsFirebaseRecyclerOptions =
        new FirebaseRecyclerOptions.Builder<Friends>()
                .setIndexedQuery(mFriendDatabase, mUserDatabase, Friends.class)
                .build();
package com.divyanshi.chatapp;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.ProgressDialog;
import android.os.Bundle;

import java.text.DateFormat;

import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
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.ValueEventListener;
import com.squareup.picasso.Picasso;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class ProfileActivity extends AppCompatActivity {

    private ImageView mProfileImage;
    private TextView mProfileName, mProfileStatus, mProfileFriendsCount;
    private Button mProfileSendReqBtn, nDeclineBtn;
    private DatabaseReference mUserDatabase;
    private ProgressDialog mProgressDialog;
    private DatabaseReference mFriendReqDatabase;
    private DatabaseReference mFriendsDatabase;
    private DatabaseReference mNotificationDatabase;
    private DatabaseReference mRootRef;

    private FirebaseUser mCurrent_user;

    private String mCurrent_State;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        final String user_id = getIntent().getStringExtra("user_id");

        mUserDatabase = FirebaseDatabase.getInstance().getReference().child("users").child(user_id);
        mFriendReqDatabase = FirebaseDatabase.getInstance().getReference().child("Friend_req");
        mNotificationDatabase = FirebaseDatabase.getInstance().getReference().child("notification");
        mCurrent_user = FirebaseAuth.getInstance().getCurrentUser();
        mFriendsDatabase = FirebaseDatabase.getInstance().getReference().child("Friends");
        mRootRef = FirebaseDatabase.getInstance().getReference();
        mProfileImage = (ImageView) findViewById(R.id.profile_image);
        mProfileName = (TextView) findViewById(R.id.profile_display_name);
        mProfileStatus = (TextView) findViewById(R.id.profile_status);
        mProfileFriendsCount = (TextView) findViewById(R.id.Profile_totalFrnds);
        mProfileSendReqBtn = (Button) findViewById(R.id.profile_SendReq);
        nDeclineBtn = (Button) findViewById(R.id.profile_Decline_reqBtn);

        mCurrent_State = "not_friends";

        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setTitle("Loading UserData");
        mProgressDialog.setMessage("Please wait while we load the data.");
        mProgressDialog.setCanceledOnTouchOutside(false);
        mProgressDialog.show();

        mUserDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                String display_name = snapshot.child("name").getValue().toString();
                String status = snapshot.child("status").getValue().toString();
                String image = snapshot.child("image").getValue().toString();

                mProfileName.setText(display_name);
                mProfileStatus.setText(status);

                Picasso.with(ProfileActivity.this).load(image).placeholder(R.drawable.default_avatar).into(mProfileImage);


                //-------FRIEND LIST /REQUEST FEATURE--------//

                mFriendReqDatabase.child(mCurrent_user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {

                        if (snapshot.hasChild(user_id)) {

                            String req_type = snapshot.child(user_id).child("request_type").getValue().toString();
                            if (req_type.equals("received")) {
                                mCurrent_State = "req_received";
                                mProfileSendReqBtn.setText("Accept Friend Request");
                                nDeclineBtn.setVisibility(View.VISIBLE);
                                nDeclineBtn.setEnabled(true);

                            } else if (req_type.equals("sent")) {
                                mCurrent_State = "Req_sent";
                                mProfileSendReqBtn.setText("Cancel Friend Request");

                                nDeclineBtn.setVisibility(View.INVISIBLE);
                                nDeclineBtn.setEnabled(false);
                            }
                            mProgressDialog.dismiss();


                        } else {
                            mFriendsDatabase.child(mCurrent_user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot snapshot) {
                                    if (snapshot.hasChild(user_id)) {

                                        mCurrent_State = "friends";
                                        mProfileSendReqBtn.setText("Unfriend this Person");

                                        nDeclineBtn.setVisibility(View.INVISIBLE);
                                        nDeclineBtn.setEnabled(false);
                                    }
                                    mProgressDialog.dismiss();

                                }

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


                                }
                            });
                        }

                    }

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

                    }
                });


            }

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

            }
        });

        mProfileSendReqBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mProfileSendReqBtn.setEnabled(false);

                // NOT FRIEND STATE//
                if (mCurrent_State.equals("not_friends")) {

                    mFriendReqDatabase.child(mCurrent_user.getUid()).child(user_id).child("request_type").setValue("sent").addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            if (task.isSuccessful()) {
                                mFriendReqDatabase.child(user_id).child(mCurrent_user.getUid()).child("request_type").setValue("received").addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {

                                        HashMap<String, String> notificationData = new HashMap<>();
                                        notificationData.put("from", mCurrent_user.getUid());
                                        notificationData.put("type", "request");

                                        mNotificationDatabase.child(user_id).push().setValue(notificationData).addOnSuccessListener(new OnSuccessListener<Void>() {
                                            @Override
                                            public void onSuccess(Void aVoid) {
                                                mCurrent_State = "Req_sent";

                                                mProfileSendReqBtn.setText("Cancel Friend Request");

                                                nDeclineBtn.setVisibility(View.INVISIBLE);
                                                nDeclineBtn.setEnabled(false);
                                            }
                                        });


                                    }


                                });

                            } else {
                                Toast.makeText(ProfileActivity.this, "Failed to send the Request, Please try again.", Toast.LENGTH_SHORT).show();
                            }
                            mProfileSendReqBtn.setEnabled(true);
                        }
                    });

                }

                // Cancel the request //
                if (mCurrent_State.equals("Req_sent")) {

                    mFriendReqDatabase.child(mCurrent_user.getUid()).child(user_id).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {

                            mFriendReqDatabase.child(user_id).child(mCurrent_user.getUid()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    mProfileSendReqBtn.setEnabled(true);
                                    mCurrent_State = "not_friends";

                                    mProfileSendReqBtn.setText("Send Friend Request");
                                    nDeclineBtn.setVisibility(View.INVISIBLE);
                                    nDeclineBtn.setEnabled(false);


                                }
                            });


                        }
                    });
                }

                if (mCurrent_State.equals("req_received")) {

                    final String currentDate = DateFormat.getDateTimeInstance().format(new Date());
                    Map friendMap = new HashMap();
                    friendMap.put("Friends/" + mCurrent_user.getUid() + "/" + user_id + "/date", currentDate);
                    friendMap.put("Friends/" + user_id + "/" + mCurrent_user.getUid() + "/date", currentDate);
                    friendMap.put("Friend_req/" + mCurrent_user.getUid() + "/" + user_id, null);
                    friendMap.put("Friend_req/" + user_id + "/" + mCurrent_user.getUid(), null);

                    mRootRef.updateChildren(friendMap, new DatabaseReference.CompletionListener() {
                        @Override
                        public void onComplete(@Nullable DatabaseError error, @NonNull DatabaseReference ref) {
                            mProfileSendReqBtn.setEnabled(true);
                            mCurrent_State = "friends";
                            mProfileSendReqBtn.setText("UnFriend this person");
                        }
                    });
                }
            }

        });
    }
}