Не удается преобразовать объект типа java .lang.string в тип Friends - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь реализовать FirebaseRecyclerAdapter в моем приложении, но когда я хочу заполнить свое представление переработчика данными, тогда приложение cra sh и я получаю "не могу преобразовать объект типа java .lang.string в тип Друзья "ошибка. Я не понимаю, что я сделал не так, потому что у меня есть представление о переработчике пользователя, и я заполнил его таким же образом, и у меня нет проблем там. Я потратил несколько часов, чтобы решить эту проблему самостоятельно, но мои усилия ничего не принесли.

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        mFireBaseAuth = FirebaseAuth.getInstance()
        currentUser = mFireBaseAuth!!.currentUser!!.uid

        mFriendsDatabaseRef =
            FirebaseDatabase.getInstance().reference.child("Friends").child(currentUser!!)
        mUsersDatabaseRef = FirebaseDatabase.getInstance().reference.child("Users")

        recyclerView.layoutManager = LinearLayoutManager(context)
    }


    override fun onStart() {
        super.onStart()

       val options: FirebaseRecyclerOptions<Friends> = FirebaseRecyclerOptions.Builder<Friends>()
            .setQuery(mFriendsDatabaseRef!!, Friends::class.java)
            .build()

        adapter = MyFirebaseRecyclerAdapter(options)

        recyclerView.adapter = adapter

        adapter!!.startListening(
    }

Адаптер onBindViewHolder:

override fun onBindViewHolder(holder: FriendsViewHolder, position: Int, model: Friends) {
        holder.setStatus(model.date)

        val listUserId = getRef(position).key

        mUsersDatabaseRef!!.child(listUserId!!)
            .addValueEventListener(object : ValueEventListener {

                override fun onDataChange(p0: DataSnapshot) {
                    val userName = p0.child("name").value.toString()
                    val userImage = p0.child("image").value.toString()

                    if (p0.hasChild("online")) {
                        val userOnline = p0.child("online").value.toString()
                        holder.setUserOnline(userOnline)
                    }

                    holder.setName(userName)
                    holder.setImage(userImage)
                    }
                   ....

класс Друзья:

ublic class Friends {

private String date;

public Friends(){

}

public String getDate() {
    return date;
}

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

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

Console screenshot

1 Ответ

1 голос
/ 08 марта 2020

Внутри setQuery вы используете класс pojo Friends, но в своем запросе:

mFriendsDatabaseRef = FirebaseDatabase.getInstance().reference.child("Friends").child(currentUser!!)

Вы пытаетесь получить атрибут типа String, поэтому измените запрос на следующий :

 mFriendsDatabaseRef = FirebaseDatabase.getInstance().reference.child("Friends")

Кроме того, поскольку ваш класс Friends содержит поле типа date, вам следует изменить свою базу данных следующим образом:

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