我正在 android studio 的 kotlin 中制作 recyclerview。我正在嘗試設定一個事件偵聽器,該偵聽器將一個按鈕放入 recyclerview 并輸出一條 toast 訊息。即使在背景關系中輸入 this@[activity name] 而不是 this,也不會顯示 toast 訊息。什么地方出了錯?
錯誤代碼如下。
未解決的參考:@UpdateActivity
class UpdateActivity : AppCompatActivity() {
private val vBinding by lazy {ActivityUpdateBinding.inflate(layoutInflater)}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(vBinding.root)
var recyclerViewAdapter = CustomAdapter()
recyclerViewAdapter.listData = arrayListOf<String>("a", "b", "c")
vBinding.uploadedRecyclerView.adapter = recyclerViewAdapter
vBinding.uploadedRecyclerView.layoutManager = LinearLayoutManager(this)
} // onCreate End
class CustomAdapter:RecyclerView.Adapter<CustomAdapter.Holder>(){
var listData = arrayListOf<String>()
class Holder(val vBinding:UploadedRecyclerBinding):RecyclerView.ViewHolder(vBinding.root){
fun setData(name:String){
vBinding.name.text = name
vBinding.getBtn.setOnClickListener {
**Toast.makeText(this@UpdateActivity, "test", Toast.LENGTH_SHORT).show()**
// ↑A compilation error occurs here.**
}
}
} // Holder end
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
val vBinding = UploadedRecyclerBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return Holder(vBinding)
}
override fun onBindViewHolder(holder: Holder, position: Int) {
val name = listData[position]
holder.setData(name)
}
override fun getItemCount(): Int {
return listData.size
}
} // CustomAdapter end
} // UpdateActivity end
uj5u.com熱心網友回復:
您可以在創建配接器時嘗試將背景關系放入配接器的建構式中,并使用此背景關系來顯示祝酒詞。像這樣的東西:
class CustomAdapter(
private val mContext: Context
):RecyclerView.Adapter<CustomAdapter.Holder>(){
在持有人類中:
Toast.makeText(mContext, "test", Toast.LENGTH_SHORT).show()
最后,當您在活動中創建配接器時:
var recyclerViewAdapter = CustomAdapter(this)
通常,我們會在另一個檔案中創建配接器類,所以在配接器中使用this@UpdateActivity是個壞主意
uj5u.com熱心網友回復:
與其在 Toast 中使用本地背景關系,不如在顯示時始終使用 applicationContext。因此,您應該將 Toast 訊息的創建替換為,
Toast.makeText(applicationContext, "test", Toast.LENGTH_SHORT).show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/515347.html
標籤:安卓工作室科特林
上一篇:androidstudio生成包失敗-檔案“root/lib/macosArm64/libmultik_jni-macosArm64.dylib”使用保留檔案或目錄名稱“lib”
