簡體   English   中英

如何在 RecycleViwer 的 Kotlin 中編寫 PopupMenu?

[英]How to write PopupMenu in Kotlin in RecycleViwer?

這是我第一次創建 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)

對於“this”上下文表示所需的上下文。 我需要在那里放什么才能工作? 謝謝你

Android 中的每個 View 對象都有一個關聯的上下文,即實例化視圖的 Activity 或 Fragment 類。 您可以使用視圖的上下文屬性來獲取上下文,但您需要小心不要泄漏它。 如果確實需要上下文,則可以將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()
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM