![](/img/trans.png)
[英]Android recyclerview - call method / function from second adapter (Kotlin)
[英]how to make a phone call from android adapter recyclerview using kotlin
我是 Kotlin 的新手,我正在嘗試從具有電話號碼按鈕的回收站視圖撥打電話,我希望當我單擊該按鈕時,它應該會自動打開我的電話撥號器,但是當我單擊時按鈕,沒有任何反應。
這是我所做的:
我允許在清單文件中進行調用
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
我的 recyclerview 有圖像、姓名、聯系人、專業知識和呼叫聯系人的按鈕
這是我應該執行活動的適配器的代碼片段。 我不確定,但也許我的方法可能有問題。
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.core.content.ContextCompat.startActivity
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
class ConsultantAdapter(private val modelList: List<ConsultantModel>) :
RecyclerView.Adapter<ConsultantAdapter.ViewHolder>() {
private lateinit var callBtnListener: View.OnClickListener
classConsultantAdapter(valmodelList:List<ConsultantModel>,callBtnListener:View.OnClickListener) {}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val cImage: ImageView = itemView.findViewById(R.id.profile_image)
private val cName: TextView = itemView.findViewById(R.id.consultant_name)
private val cContact: TextView = itemView.findViewById(R.id.consultant_contact)
private val cExpertise: TextView = itemView.findViewById(R.id.consultant_expertise)
val callBtn: ImageView = itemView.findViewById(R.id.call_consultant_button)
fun setEvents(resource: String, name: String, contact: String, expertise: String) {
Glide.with(itemView.context).load(resource).into(cImage)
cName.text = name
cContact.text = contact
cExpertise.text = expertise
itemView.setOnClickListener{
val intent: Intent = Uri.parse(contact).let { number ->
Intent(Intent.ACTION_DIAL, number)
}
itemView.context.startActivity(intent)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val galleryView =
LayoutInflater.from(parent.context).inflate(R.layout.consultants_item, parent, false)
return ViewHolder(galleryView)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val resource = modelList[position].image
val name = modelList[position].name
val contact = modelList[position].contact
val expertise = modelList[position].expertise
holder.setEvents(resource, name, contact, expertise)
}
override fun getItemCount(): Int {
return modelList.size
}
}
只需添加
setOnClickListener
到你的callBtn,或者引用你的父視圖,比如相對布局或者你用來包裝所有子視圖的任何東西。
此處的 ItemView 可能是布局、行或單元格的根視圖,您可以使用將其綁定到任何視圖
作為
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.