Recycler View上的调用意图

问题描述 投票:-1回答:2

这是我的回收站适配器。我想在单击通话按钮时拨打通话。我不知道该怎么办。请帮我我在支架上增加了通话按钮。在那之后我什么都不知道。该应用程序在我的本地制作了血库。因此请立即帮助我。

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 android-recyclerview google-cloud-firestore recycler-adapter onitemclicklistener
2个回答
0
投票

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

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

此后,您可以使用上下文调用您的Intent。

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + Pass You TelePhone Number));
context.startActivity(intent);

您的最终代码如下。

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);

        }

    }
}

不要忘记将相关权限添加到清单中:

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

0
投票

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

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + model.getNumber());
context.startActivity(intent);
© www.soinside.com 2019 - 2024. All rights reserved.