Я пытаюсь создать приложение чата в стиле Slack, следуя учебному пособию в курсе, который я беру в Интернете.
В учебном пособии инструктор использует ListView и метод OnItemClickListener, но я пытаюсьсделайте это с видом переработчика, и я застрял с onClickListener в адаптере.
Я пытался найти ответы на другие вопросы, но не смог найти тот, который решает мою проблему.Самыми близкими были это и это
Мои две проблемы:
1. В верхней части экрана приложения отображается заголовок, который гласит:какой канал в данный момент активенЯ создал синглтон, который содержит «текущий канал», и текст заголовка извлекается из этого синглтона.Мне трудно изменить значение этого синглтона при клике.
Основное занятие также содержит все каналы в виде списка в ящике.Я пытаюсь закрыть ящик при нажатии на канал, но этого тоже не происходит.
Это мой текущий адаптер:
class ChannelsAdapter(val context: Context, val channels: ArrayList<Channel>) :
RecyclerView.Adapter<ChannelsAdapter.Holder>() {
inner class Holder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val singleChannel = itemView.findViewById<TextView>(R.id.single_channel)
val mainLayout = LayoutInflater.from(context).inflate(R.layout.activity_main, null)
fun bindText(textVar: String, context: Context) {
singleChannel.text = textVar
}
}
override fun onBindViewHolder(holder: Holder, position: Int) {
holder.bindText(channels[position].toString(), context)
holder.itemView.setOnClickListener {
ChannelName.activeChannel = channels[position]
holder.mainLayout.drawer_layout.closeDrawer(GravityCompat.START)
}
}
override fun getItemCount(): Int {
return channels.count()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChannelsAdapter.Holder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.channel_list_layout, parent, false)
return Holder(view)
}
}
Это синглтон
object ChannelName {
var activeChannel : Channel? = null
}