Как ставить новые элементы RecyclerView в начало списка

Есть список RecyclerView. В нём хранятся недавние чаты. То есть если пользователь пишет другому пользователю сообщение, то этот чат сохранятся в список во фрагменте. Фрагмент получает список:

class MessagesFragment : Fragment() {

    private var userAdapter: UserAdapterSecond? = null
    private var mUsers: List<User>? = null
    private var usersChatList: List<ChatList>? = null
    lateinit var recycler_view_messages: RecyclerView
    private var firebaseUser: FirebaseUser? = null

    private var param1: String? = null
    private var param2: String? = null

    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        arguments?.let {
            param1 = it.getString(ARG_PARAM1)
            param2 = it.getString(ARG_PARAM2)
        }
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_messages, container, false)


        recycler_view_messages = view.findViewById(R.id.recycler_view_messages)
        recycler_view_messages.setHasFixedSize(true)
        recycler_view_messages.layoutManager = LinearLayoutManager(context)


        firebaseUser = FirebaseAuth.getInstance().currentUser


        usersChatList = ArrayList()

        val ref = FirebaseDatabase.getInstance().reference.child("ChatList").child(firebaseUser!!.uid)
        ref!!.addValueEventListener(object : ValueEventListener{
            override fun onDataChange(p0: DataSnapshot)
            {
                (usersChatList as ArrayList).clear()

                for (dataSnapshot in p0.children)
                {
                    val chatList = dataSnapshot.getValue(ChatList::class.java)

                    (usersChatList as ArrayList).add(chatList!!)
                }
                retrieveChatList()
            }

            override fun onCancelled(p0: DatabaseError) {

            }
        })


        return view
    }


    private fun retrieveChatList()
    {
        mUsers = ArrayList()

        val ref = FirebaseDatabase.getInstance().reference.child("Users")
        ref!!.addValueEventListener(object : ValueEventListener {
            override fun onDataChange(p0: DataSnapshot)
            {
                (mUsers as ArrayList).clear()

                for (dataSnapshot in p0.children)
                {
                    val user = dataSnapshot.getValue(User::class.java)

                    for (eachChatList in usersChatList!!)
                    {
                        if (user!!.getUID().equals(eachChatList.getId()))
                        {
                            (mUsers as ArrayList).add(user!!)
                        }
                    }
                }
                userAdapter = UserAdapterSecond(context!!, (mUsers as ArrayList<User>), true)
                recycler_view_messages.adapter = userAdapter
            }

            override fun onCancelled(p0: DatabaseError) {

            }
        })
    }
}

Если я написал пользователю А, чат сохранился в самом начале. Далее я пишу пользователю Б, чат сохраняется в самом начале, выше чата А. Если же я опять напишу пользователю А, то чат А так и останется ниже чата Б, а должен становиться самым первым. Как решить решить эту проблему?


Ответы (0 шт):