Как ставить новые элементы 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) {
}
})
}
}
Если я написал пользователю А, чат сохранился в самом начале. Далее я пишу пользователю Б, чат сохраняется в самом начале, выше чата А. Если же я опять напишу пользователю А, то чат А так и останется ниже чата Б, а должен становиться самым первым. Как решить решить эту проблему?