Могу ли я выбрать случайного пользователя из базы данных Firebase в реальном времени в качестве партнера по чату в качестве второго варианта помимо выбранного пользователя? - PullRequest
1 голос
/ 06 февраля 2020

У меня проблема с кодированием приложения чата. Одной из запланированных функций является связь со случайным пользователем из базы данных. В настоящее время у меня есть одна кнопка, которая загружает обзор всех пользователей, вы можете выбрать одного пользователя, и вы можете общаться с этим человеком (отправка / получение сообщений работает, также, когда я закрываю приложение и открываю его снова, сообщения по-прежнему можно просматривать и сохранять ).

Для этого у меня есть функция NewMessageActivity, которая при нажатии на одного пользователя приводит к ChatLogActivity и переносит с ним информацию о пользователе (toUser и USER_KEY).

Теперь мой план состоит в том, чтобы в основном пропустите часть NewMessage и перейдите прямо к ChatLogActivity, и назначьте для этого случайного пользователя.

Я думал просто добавить что-то вроде if / else в мой код (поэтому, если toUser назначен NewMessageActivity загрузить это, иначе загрузить случайным образом), но я не могу заставить его работать. У моих пользователей есть все отдельные идентификаторы пользователей, которые создаются случайным образом при регистрации.

Вот мой код:


    companion object {
        val TAG = "ChatLog"
    }
    val adapter = GroupAdapter<GroupieViewHolder>()

    var toUser: User? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_chat_log)


        recyclerview_chat_log.adapter = adapter

        keyboardManagement()




        toUser = intent.getParcelableExtra<User>(NewMessageActivity.USER_KEY)

        supportActionBar?.title = toUser?.username



        listenForMessages()

        send_button_chat_log.setOnClickListener {
            Log.d(TAG, "Attempt to send message")
            performSendMessage()
        }

    } 

Вот как я обычно получаю пользователей для чата, в случае, если это важно :

        val ref = FirebaseDatabase.getInstance().getReference("/users")
        ref.addListenerForSingleValueEvent(object: ValueEventListener{

            override fun onDataChange(p0: DataSnapshot) {
                val adapter = GroupAdapter<GroupieViewHolder>()


                p0.children.forEach{
                    Log.d("NewMessage", it.toString())
                    val user = it.getValue(User::class.java)
                    if (user != null) {
                        adapter.add(UserItem(user))
                    }
                }

                adapter.setOnItemClickListener{ item, view ->

                    val userItem = item as UserItem

                    val intent = Intent(view.context, ChatLogActivity::class.java)
                    //intent.putExtra(USER_KEY, userItem.user!)
                    intent.putExtra(USER_KEY, userItem.user)

                    startActivity(intent)

                    //Zurück zum Main Menu statt zur User Auswahl
                    finish()
                }

                recyclerView_newmessage.adapter = adapter
            }

            override fun onCancelled(p0: DatabaseError) {

            }
        })
    }
}

class UserItem(val user: User): Item<GroupieViewHolder>() {
    //wird aufgerufen für die einzelnen Userobjekte
    override fun bind(viewHolder: GroupieViewHolder, position: Int) {
        viewHolder.itemView.username_textView_new_message.text = user.username

        Picasso.get().load(user.profileImageURL).into(viewHolder.itemView.picture_imageView_new_message)
    }
    //Einzelne Zeilen gestalten
    override fun getLayout(): Int {
    return R.layout.user_row_new_messages
    }
}

Я все еще новичок, поэтому я совершенно не знаю, что делать сейчас. Если у вас есть какие-либо идеи и вы можете мне помочь, я буду очень признателен! :)

Спасибо!

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