[英]How to set OnclickListener in recyclerView for going another activity
**大家好。 我是 android 開發的新手。 我正在使用房間數據庫,並在 recyclerView 中設置數據。 現在,當我單擊任何 recyclerview 項目時,我正在嘗試做,然后我需要 go 另一個活動。任何人請幫助我。 **
MainActivity RecyclerView 添加代碼
private fun setUpListOfDataIntoRecyclerView(registerList:ArrayList<registerEntity>,
registerDao: registerDao){
if(registerList.isNotEmpty()){
var itemAdapter = MainAdapter(registerList)
binding?.rvHappyPlaceList?.layoutManager = LinearLayoutManager(this)
binding?.rvHappyPlaceList?.adapter = itemAdapter
binding?.rvHappyPlaceList?.visibility = View.VISIBLE
binding?.noRecordText?.visibility = View.GONE
}else{
binding?.rvHappyPlaceList?.visibility = View.GONE
binding?.noRecordText?.visibility = View.VISIBLE
}
}
主適配器
class MainAdapter(val items: ArrayList<registerEntity>):
RecyclerView.Adapter<MainAdapter.MainHolder>() {
//step 2
private var onClickListener: AdapterView.OnItemClickListener? = null
inner class MainHolder(var binding: ItemHappyPlaceBinding): RecyclerView.
ViewHolder(binding.root) {
val llTitle = binding.tvTitle
val llDescription = binding.tvDescription
var llImage = binding.ivPlaceImage
}
fun setOnClickListener(onClickListener: View.OnContextClickListener){
this.onClickListener = onClickListener
}
override fun onBindViewHolder(holder: MainHolder, position: Int) {
val item = items[position]
holder.llTitle.text = item.title
holder.llDescription.text = item.description
holder.llImage.setImageURI(Uri.parse(item.image))
}
我建議您更換:
private var onClickListener: AdapterView.OnItemClickListener? = null
有了這個:
var onItemClick: (() -> Unit)? = null
您還可以刪除有趣的 setOnClickListener(..){}
並在您的 MainHolder 中添加 binding.root.setOnClickListener{},例如:
inner class MainHolder(var binding: ItemHappyPlaceBinding): RecyclerView.ViewHolder(binding.root) {
init {
binding.root.setOnClickListener {
onItemClick?.invoke()
}
}
val llTitle = binding.tvTitle
val llDescription = binding.tvDescription
var llImage = binding.ivPlaceImage
}
或者,如果您願意,您也可以在 onBindViewHolder 中添加 onItemClick?.invoke(),例如:
holder.itemView.setOnClickListener {
onItemClick?.invoke()
}
然后在您的活動中,在有趣的 setUpListOfDataIntoRecyclerView 中添加:
var itemAdapter = MainAdapter(registerList)
itemAdapter.onItemClick = this::goToActivity()
並添加 goToActivity 樂趣,例如:
fun goToActivity(){
// launch the activity
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.