Android 回收器视图上的调用意图

Android 回收器视图上的调用意图,android,google-cloud-firestore,android-recyclerview,onitemclicklistener,Android,Google Cloud Firestore,Android Recyclerview,Onitemclicklistener,这是我的回收器适配器。我想在单击呼叫按钮时拨打呼叫。我不知道该怎么办。 请帮帮我 我在支架上加了呼叫按钮。从那以后我什么都不知道。 这是我所在地血库的申请。 所以请马上帮我 import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import

这是我的回收器适配器。我想在单击呼叫按钮时拨打呼叫。我不知道该怎么办。 请帮帮我 我在支架上加了呼叫按钮。从那以后我什么都不知道。 这是我所在地血库的申请。 所以请马上帮我

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.firestore.FirestoreRecyclerAdapter;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.database.snapshot.Index;
import com.google.firebase.firestore.DocumentSnapshot;

public class NoteAdapter extends FirestoreRecyclerAdapter<Note, NoteAdapter.NoteHolder> {

    ListActivity listActivity;
    Context context;
    public NoteAdapter(@NonNull FirestoreRecyclerOptions<Note> options) {
        super (options);
    }

    @Override
    protected void onBindViewHolder(@NonNull NoteHolder holder, final int position, @NonNull final Note model) {
        holder.name.setText (model.getName ());
        holder.place.setText (model.getPlace ());
        holder.location.setText (model.getMuncipality ());
        holder.blood.setText (model.getBloodgroup ());
        holder.number.setText (model.getNumber ());

    }

    @NonNull
    @Override
    public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from (parent.getContext ()).inflate (R.layout.item_view,parent,false);
        return new NoteHolder (view);
    }

    static class NoteHolder extends RecyclerView.ViewHolder{
        ListActivity listActivity;
        Context context;
        TextView name;
        TextView place;
        TextView blood;
        TextView location;
        TextView number;
        Button call;

        public NoteHolder(@NonNull View itemView) {
            super (itemView);
            name=itemView.findViewById (R.id.Name);
            place=itemView.findViewById (R.id.Place);
            blood=itemView.findViewById (R.id.Blood_group);
            location=itemView.findViewById (R.id.Muncipality);
            number=itemView.findViewById (R.id.mobileNumber);
            call=itemView.findViewById (R.id.call);

        }

    }
}
导入android.content.Context;
导入android.content.Intent;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.LinearLayout;
导入android.widget.TextView;
导入android.widget.Toast;
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
导入com.firebase.ui.firestore.FirestoreRecyclerAdapter;
导入com.firebase.ui.firestore.FirestoreRecyclerOptions;
导入com.google.firebase.database.snapshot.Index;
导入com.google.firebase.firestore.DocumentSnapshot;
公共类NoteAdapter扩展FirestoreRecyclerAdapter{
ListActivity ListActivity;
语境;
public NoteAdapter(@NonNull FirestoreRecyclerOptions选项){
超级(期权);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull票据持有人,最终整数位置,@NonNull最终票据模型){
holder.name.setText(model.getName());
holder.place.setText(model.getPlace());
holder.location.setText(model.getmuncipity());
holder.blood.setText(model.getBloodgroup());
holder.number.setText(model.getNumber());
}
@非空
@凌驾
public NoteHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
视图=LayoutFlater.from(parent.getContext()).flate(R.layout.item_视图,父视图,false);
返回新的票据持有人(视图);
}
静态类记事本扩展了RecyclerView.ViewHolder{
ListActivity ListActivity;
语境;
文本视图名称;
文本视图位置;
文本视图血液;
文本视图位置;
文本视图编号;
按钮呼叫;
公共票据持有人(@NonNull View itemView){
超级(项目视图);
name=itemView.findviewbyd(R.id.name);
地点=itemView.findViewById(R.id.place);
blood=itemView.findviewbyd(R.id.blood\u组);
位置=itemView.findViewById(R.id.Muncipity);
编号=itemView.findViewById(R.id.mobileNumber);
call=itemView.findviewbyd(R.id.call);
}
}
}

首先,您需要将上下文传递到适配器中

Context context;
public NoteAdapter(@NonNull FirestoreRecyclerOptions<Note> options,Context ctx) {
    super (options);
    content = ctx
}
您的最终代码如下所示

public class NoteAdapter extends FirestoreRecyclerAdapter<Note, NoteAdapter.NoteHolder> {

    ListActivity listActivity;
    Context context;
    public NoteAdapter(@NonNull FirestoreRecyclerOptions<Note> options,Context ctx) {
        super (options);
        content = ctx
    }

    @Override
    protected void onBindViewHolder(@NonNull NoteHolder holder, final int position, @NonNull final Note model) {
        holder.name.setText (model.getName ());
        holder.place.setText (model.getPlace ());
        holder.location.setText (model.getMuncipality ());
        holder.blood.setText (model.getBloodgroup ());
        holder.number.setText (model.getNumber ());
        holder.call.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:" + Pass You TelePhone Number));
                context.startActivity(intent);
            } 
        });
    }

    @NonNull
    @Override
    public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from (parent.getContext ()).inflate (R.layout.item_view,parent,false);
        return new NoteHolder (view);
    }

    static class NoteHolder extends RecyclerView.ViewHolder{
        ListActivity listActivity;
        Context context;
        TextView name;
        TextView place;
        TextView blood;
        TextView location;
        TextView number;
        Button call;

        public NoteHolder(@NonNull View itemView) {
            super (itemView);
            name=itemView.findViewById (R.id.Name);
            place=itemView.findViewById (R.id.Place);
            blood=itemView.findViewById (R.id.Blood_group);
            location=itemView.findViewById (R.id.Muncipality);
            number=itemView.findViewById (R.id.mobileNumber);
            call=itemView.findViewById (R.id.call);

        }

    }
}
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + model.getNumber());
context.startActivity(intent);
公共类NoteAdapter扩展FirestoreRecyclerAdapter{
ListActivity ListActivity;
语境;
公共NoteAdapter(@NonNull FirestoreRecyclerOptions选项,上下文ctx){
超级(期权);
内容=ctx
}
@凌驾
受保护的无效onBindViewHolder(@NonNull票据持有人,最终整数位置,@NonNull最终票据模型){
holder.name.setText(model.getName());
holder.place.setText(model.getPlace());
holder.location.setText(model.getmuncipity());
holder.blood.setText(model.getBloodgroup());
holder.number.setText(model.getNumber());
holder.call.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
意向意向=新意向(意向.行动\调用);
setData(Uri.parse(“tel:+传递您的电话号码”);
背景。开始触觉(意图);
} 
});
}
@非空
@凌驾
public NoteHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
视图=LayoutFlater.from(parent.getContext()).flate(R.layout.item_视图,父视图,false);
返回新的票据持有人(视图);
}
静态类记事本扩展了RecyclerView.ViewHolder{
ListActivity ListActivity;
语境;
文本视图名称;
文本视图位置;
文本视图血液;
文本视图位置;
文本视图编号;
按钮呼叫;
公共票据持有人(@NonNull View itemView){
超级(项目视图);
name=itemView.findviewbyd(R.id.name);
地点=itemView.findViewById(R.id.place);
blood=itemView.findviewbyd(R.id.blood\u组);
位置=itemView.findViewById(R.id.Muncipity);
编号=itemView.findViewById(R.id.mobileNumber);
call=itemView.findviewbyd(R.id.call);
}
}
}
不要忘记将相关权限添加到您的清单中:

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

您也可以像这样直接传递数字

public class NoteAdapter extends FirestoreRecyclerAdapter<Note, NoteAdapter.NoteHolder> {

    ListActivity listActivity;
    Context context;
    public NoteAdapter(@NonNull FirestoreRecyclerOptions<Note> options,Context ctx) {
        super (options);
        content = ctx
    }

    @Override
    protected void onBindViewHolder(@NonNull NoteHolder holder, final int position, @NonNull final Note model) {
        holder.name.setText (model.getName ());
        holder.place.setText (model.getPlace ());
        holder.location.setText (model.getMuncipality ());
        holder.blood.setText (model.getBloodgroup ());
        holder.number.setText (model.getNumber ());
        holder.call.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:" + Pass You TelePhone Number));
                context.startActivity(intent);
            } 
        });
    }

    @NonNull
    @Override
    public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from (parent.getContext ()).inflate (R.layout.item_view,parent,false);
        return new NoteHolder (view);
    }

    static class NoteHolder extends RecyclerView.ViewHolder{
        ListActivity listActivity;
        Context context;
        TextView name;
        TextView place;
        TextView blood;
        TextView location;
        TextView number;
        Button call;

        public NoteHolder(@NonNull View itemView) {
            super (itemView);
            name=itemView.findViewById (R.id.Name);
            place=itemView.findViewById (R.id.Place);
            blood=itemView.findViewById (R.id.Blood_group);
            location=itemView.findViewById (R.id.Muncipality);
            number=itemView.findViewById (R.id.mobileNumber);
            call=itemView.findViewById (R.id.call);

        }

    }
}
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + model.getNumber());
context.startActivity(intent);

你尝试过什么或发现了什么可以帮助你?“我不知道该做什么”没有帮助。此外,当我使用此方法时,说“请立即帮助我。”并不是寻求帮助的好方法``adapter=newnoteadapter(options)``出错您需要在初始化适配器时传递上下文。像这样的“adapter=newnoteadapter(选项,上下文)”。