来自RecyclerView的直接电话呼叫.(芬兰湾的科特林)



目前我是一个初学者

我正在使用firestore,从那里所有的数据都显示在RecyclerView如姓名,地址,电话号码等。现在,我想用"按钮"打电话。除了"电话号码",

在哪个位置我必须添加Call Intent?


private lateinit var recyclerView: RecyclerView
private lateinit var userList: ArrayList<User>
private lateinit var db: FirebaseFirestore
private lateinit var myAdapter: MyAdapter
private lateinit var searchView: SearchView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_newsfeed)
db = FirebaseFirestore.getInstance()
recyclerView = findViewById(R.id.userList)
searchView=findViewById(R.id.searchView)
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.setHasFixedSize(true)
userList = arrayListOf()
myAdapter = MyAdapter(userList)
recyclerView.adapter = myAdapter
EventChangeListener()
searchView.setOnQueryTextListener(object :SearchView.OnQueryTextListener{
override fun onQueryTextSubmit(query: String?): Boolean {
return false
}
override fun onQueryTextChange(newText: String?): Boolean {
filterList(newText)
return true
}
})
}
private fun filterList(query: String?) {
if(query!=null){
val filteredList=ArrayList<User>()
for (i in userList){
if(i.city!!.lowercase(Locale.ROOT).contains(query)){
filteredList.add(i)
}
}
if(filteredList.isEmpty()){
}else{
myAdapter.setFilteredList(filteredList)
}
}
}
private fun EventChangeListener() {
db = FirebaseFirestore.getInstance()
db.collection("users").orderBy("bloodGroup", Query.Direction.ASCENDING)
.addSnapshotListener(object : com.google.firebase.firestore.EventListener<QuerySnapshot> {
override fun onEvent(
value: QuerySnapshot?,
error: FirebaseFirestoreException?
) {
if (error != null) {
Log.e("Firestore Error", error.message.toString())
return
}
for (dc: DocumentChange in value?.documentChanges!!) {
if (dc.type == DocumentChange.Type.ADDED) {
userList.add(dc.document.toObject(User::class.java))
}
}
myAdapter.notifyDataSetChanged()
}
}
)
}

MyAdapter代码在这里


class MyAdapter(private var userList: ArrayList<User>) :
RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val name: TextView = itemView.findViewById(R.id.nameTextView)
val bloodGroup: TextView = itemView.findViewById(R.id.bGTextView)
val contact: TextView = itemView.findViewById(R.id.cNTextView)
val cityName: TextView = itemView.findViewById(R.id.addressTextView)
}
fun setFilteredList(userList: ArrayList<User>){
this.userList= userList
notifyDataSetChanged()
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val itemView =
LayoutInflater.from(parent.context).inflate(R.layout.donor_list, parent, false)
return MyViewHolder(itemView)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val user: User = userList[position]
holder.name.text = user.name
holder.contact.text = user.contactNumber
holder.bloodGroup.text = user.bloodGroup
holder.cityName.text = user.city
}

override fun getItemCount(): Int {
return userList.size
}
}

我如何通过点击一个图标,在RecyclerView中直接通过他们给定的号码拨打电话?

<标题>谢谢!

您可以通过Intent进行通话下面是演示代码

val phoneIntent = Intent(Intent.ACTION_CALL)
phoneIntent.data = Uri.parse("tel:1234567890")
startActivity(phoneIntent)   

将相关权限添加到您的清单

<uses-permission android:name="android.permission.CALL_PHONE" /> 

<uses-permission android:name="android.permission.CALL_PHONE" />

我想你是在找这样的东西:

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "Your Phone_number"));
startActivity(intent);