com.google.firebase.database.DatabaseException: невозможно преобразовать объект типа java.lang.String в тип com.example.pro.mychatapp.Friends. - PullRequest
0 голосов
/ 01 июня 2018

Журнал это то, что я получаю

Я сталкиваюсь со следующей ошибкой com.google.firebase.database.DatabaseException: Невозможно преобразовать объект типа java.lang.String ввведите

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.pro.mychatapp.Friends
        at com.google.android.gms.internal.zg.zzb(Unknown Source)
        at com.google.android.gms.internal.zg.zza(Unknown Source)
        at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
        at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:22)
        at com.firebase.ui.database.ObservableSnapshotArray.getObject(ObservableSnapshotArray.java:141)
        at com.firebase.ui.database.CachingObservableSnapshotArray.getObject(CachingObservableSnapshotArray.java:40)
        at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:127)
        at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:164)
        at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6673)
        at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6714)
        at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5647)
        at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5913)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)

FirendsFragment.java

я просто хочу отобразить список друзей

package com.example.pro.mychatapp;


import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.auth.FirebaseAuth;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

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

    private RecyclerView myFriendsList;

    private DatabaseReference FriendsReference;
    private FirebaseAuth mAuth;

    String online_user_id;

    private View myMainView;

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


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

        myMainView = inflater.inflate(R.layout.fragment_friends, container, false);


        myFriendsList = (RecyclerView) myMainView.findViewById(R.id.friends_list);

        mAuth = FirebaseAuth.getInstance() ;
        online_user_id = mAuth.getCurrentUser().getUid();

        FriendsReference = FirebaseDatabase.getInstance().getReference().child("Friends").child(online_user_id);


        myFriendsList.setLayoutManager(new LinearLayoutManager(getContext()));

        // Inflate the layout for this fragment
        return myMainView;


    }

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

        FirebaseRecyclerAdapter<Friends, FriendsViewHolder > firebaseRecyclerAdapter =
                new FirebaseRecyclerAdapter<Friends, FriendsViewHolder>
                        (
                                Friends.class,
                                R.layout.all_users_display_layout,
                                FriendsViewHolder.class,
                                FriendsReference

                         )
                {
                    @Override
                    protected void populateViewHolder(FriendsViewHolder viewHolder, Friends model, int position)
                    {
                        System.out.println("********************************************************************");

                        viewHolder.setDate(model.getDate());

                    }
                };

        myFriendsList.setAdapter(firebaseRecyclerAdapter);
    }

    public static class FriendsViewHolder extends RecyclerView.ViewHolder
    {
        View mView;


        public FriendsViewHolder(View itemView)
        {
            super(itemView);
            mView =itemView;
        }

        public void setDate(String date)
        {
            TextView sinceFriendsDate = (TextView) mView.findViewById(R.id.all_users_status);
            sinceFriendsDate.setText(date);
        }
    }
}

Friends.java

package com.example.pro.mychatapp;



public class Friends {
    public  String date;



    public Friends()
    {

    }
    public Friends(String date)
    {
        this.date = date;
    }

    public String getDate()
    {
        return date;
    }

    public void setDate(String date)
    {
        this.date = date;
    }
}

Могу я узнать, в чем проблема?Я новичок в Firebase и мне нужна ваша помощь.Я прочитал некоторый подобный вопрос здесь, но я все еще не могу решить мою проблему.Может ли какой-нибудь эксперт здесь помочь мне?

1 Ответ

0 голосов
/ 01 июня 2018

Здесь может произойти пара вещей из того, что я вижу.

1.) Ваши данные для свойства "date" в модели Friends не могут соответствовать соглашению об именах при анализе вашего datasnapshot --> объект.Я не могу увидеть пример вашего объекта в базе данных, поэтому просто нужно уточнить это.

2.) Кажется, что эта строка кода извлекает один дочерний объект, который является ключом, а не объектом Friend.

FriendsReference = FirebaseDatabase.getInstance().getReference().child("Friends").child(online_user_id);

Вместо этого я предполагаю, что вы захотите использовать FirebaseListOptions и заполнить запросом, указав друзей пользователя.

3.) Вот штраф пример базового случая, который вы пытаетесь выполнить, я определенно использовал бы это в качестве ссылки.

На основании ошибки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...