Помогите дополнить или исправить код для отображения разных типов представлений в одном RecyclerView

 class Chats: RecyclerView.Adapter<Chats.ViewHolder>() {

 private var chatsList = emptyList<ChatsModel>()
 val SENDER_VIEW_TYPE = 1
 val RECEIVER_VIEW_TYPE = 2


class ViewHolder(view: View): RecyclerView.ViewHolder(view)


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    if(viewType == SENDER_VIEW_TYPE) {
        val sender = LayoutInflater.from(parent.context).inflate(R.layout.sender, parent, false)
        return ViewHolder(sender)
    }else {
        val receiver = LayoutInflater.from(parent.context).inflate(R.layout.receiver, parent, false)
        return ViewHolder(receiver)
    }

}

override fun getItemViewType(position: Int): Int {
    val user = chatsList[position]
    if(user.userId.equals(FirebaseAuth.getInstance().uid)) {
        return SENDER_VIEW_TYPE
    }else (
        return RECEIVER_VIEW_TYPE
    )

}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
   val chat = chatsList[position]

    when(holder.itemViewType){
        SENDER_VIEW_TYPE -> {
            holder.itemView.senderText.text = chat.message

            val date = Date(chat.time)
            val simpleDateFormat = SimpleDateFormat("HH.mm")
            val strDate = simpleDateFormat.format(date)
            holder.itemView.senderTime.text = strDate.toString()


        }
        RECEIVER_VIEW_TYPE -> {holder.itemView.recieveText.text = chat.message}

    }

    val receiverId = chat.userId


    holder.itemView.setOnLongClickListener(View.OnLongClickListener {
        val bottomSheetDialog = BottomSheetDialog(it.context)
        bottomSheetDialog.setContentView(R.layout.bottom_sheet_chats)
        bottomSheetDialog.setCancelable(true)
        bottomSheetDialog.setCanceledOnTouchOutside(true)


        val delete = bottomSheetDialog.delete
        delete.setOnClickListener {
            val materialAlertDialogBuilder = MaterialAlertDialogBuilder(it.context)
            materialAlertDialogBuilder.setTitle("Удалить")
            materialAlertDialogBuilder.setPositiveButton("Да") { materialAlertDialogBuilder, which ->
                val currentUser = FirebaseAuth.getInstance().uid
                val senderRoom = currentUser + " + " + receiverId
                val database = Firebase.database.getReference("Messages")
                database.child(senderRoom).child(chat.messageId!!).setValue(null)
            }
            materialAlertDialogBuilder.setNegativeButton("Нет") {materialAlertDialogBuilder, which ->

            }
            materialAlertDialogBuilder.show()
        }
        bottomSheetDialog.show()
        true
    })





}


override fun getItemCount(): Int {
    return chatsList.size
}

@SuppressLint("NotifyDataSetChanged")
fun setList(list: List<ChatsModel>) {
    chatsList = list
    notifyDataSetChanged()
}


 }

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