簡體   English   中英

如何使用 kotlin 從 android 適配器 recyclerview 撥打電話

[英]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 有圖像、姓名、聯系人、專業知識和呼叫聯系人的按鈕

這是recyclweview的圖片

這是我應該執行活動的適配器的代碼片段。 我不確定,但也許我的方法可能有問題。

    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.

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