Как написать PopupMenu в Kotlin в RecycleViwer? - PullRequest
0 голосов
/ 02 апреля 2020

Это первый раз, когда я создаю приложение Andorid, поэтому, пожалуйста, помогите, поэтому у меня есть этот код в моем адаптере:

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.view.setOnClickListener {
            d("daniel", "clicked")
        }

        holder.view.img_more.setOnClickListener{
            val popupMenu = PopupMenu(this, it)
            popupMenu.setOnMenuItemClickListener { item ->
                when(item.itemId){
                    R.id.action_settings ->{
                        Toast.makeText(this,"this is toast message",Toast.LENGTH_SHORT).show()
                        true
                    }
                    R.id.action_settings ->{
                        Toast.makeText(this,"this is toast message",Toast.LENGTH_SHORT).show()
                        true
                    }
                    else -> false
                }
            }
            popupMenu.inflate(R.menu.menu_prijem_posiljke)
            popupMenu.show()
        }
    }

В строке:

val popupMenu = PopupMenu(this, it)

for " этот «контекст говорит о необходимом контексте. Что мне нужно положить туда, чтобы это работало? спасибо

1 Ответ

0 голосов
/ 02 апреля 2020

Каждый объект View в Android имеет связанный контекст, который является классом Activity или Fragment, который создает экземпляр представления. Вы можете использовать свойство context для представления, чтобы получить контекст, но вы должны быть осторожны, чтобы не пропустить его. Если вам действительно нужен контекст, вы можете передать applicationContext как зависимость классу Adapter. Но в качестве быстрого решения вы можете заменить свой код следующим, как предложено @Jeel, и оно должно работать.

 override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.view.setOnClickListener {
        d("daniel", "clicked")
    }

    holder.view.img_more.setOnClickListener{
        val popupMenu = PopupMenu(holder.view.context, it)
        popupMenu.setOnMenuItemClickListener { item ->
            when(item.itemId){
                R.id.action_settings ->{
                    Toast.makeText(this,"this is toast message",Toast.LENGTH_SHORT).show()
                    true
                }
                R.id.action_settings ->{
                    Toast.makeText(this,"this is toast message",Toast.LENGTH_SHORT).show()
                    true
                }
                else -> false
            }
        }
        popupMenu.inflate(R.menu.menu_prijem_posiljke)
        popupMenu.show()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...