Код: Выделить всё
class ConversationAdapter(messagesList: List) : RecyclerView.Adapter() {
private var m_MessagesList: List = messagesList
inner class MyViewHolder(view: View, context: Context) : RecyclerView.ViewHolder(view) {
var m_Sender: TextView = view.findViewById(R.id.conversation_sender)
var m_Message: TextView = view.findViewById(R.id.conversation_message)
var m_Date: TextView = view.findViewById(R.id.conversation_timestamp)
}
override fun getItemViewType(position: Int): Int {
return 0
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.conversationlayout, parent, false)
return MyViewHolder(itemView, parent.context)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val message: ChatMessageModel = m_MessagesList[position]
val holderView = holder as MyViewHolder
holderView.m_Sender.text = message.getSender()
holderView.m_Message.text = message.getMessage()
holderView.m_Date.text = message.getTimestamp()
}
override fun getItemCount(): Int {
return m_MessagesList.size
}
fun updateSections(messagesList : List) {
m_MessagesList = messagesList
}
}
Это функция обновления во фрагменте разговора:
Код: Выделить всё
private fun sendMessage() {
val message = m_EditText.text.toString()
var formattedDate = DateTimeUtils.getDateTimeNowAsString()
val chatMessage = ChatMessage(0, m_MultiplayerRound.getUserId().toInt(), m_MultiplayerRound.getUsername(), m_UserId.toInt(), m_Username, m_MultiplayerRound.getUserId().toInt(), m_MultiplayerRound.getUsername(), message, Date.from(Instant.now()))
val chatMessageModel = ChatMessageModel(chatMessage, m_MultiplayerRound.getUsername(), m_MultiplayerRound.getUserId())
m_MessagesList = m_MessagesList + chatMessageModel
m_ConversationAdapter.updateSections(m_MessagesList)
m_ConversationAdapter.notifyDataSetChanged()
}
Это функция onCreateView фрагмента:
Код: Выделить всё
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val rootView = inflater.inflate(R.layout.fragment_conversation1, container, false)
val sendMessageButton = rootView.findViewById(R.id.send_message) as Button
sendMessageButton.setOnClickListener {
sendMessage()
}
m_EditText = rootView.findViewById(R.id.message_edittext)
val recyclerView: RecyclerView = rootView.findViewById(R.id.recycler_conversation)
val mLayoutManager = LinearLayoutManager(activity)
recyclerView.layoutManager = mLayoutManager
recyclerView.itemAnimator = DefaultItemAnimator()
recyclerView.adapter = m_ConversationAdapter
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... dding-item
Мобильная версия