当前位置: 首页 > 知识库问答 >
问题:

通过Recycler查看联系并接收模型数据

许沛
2023-03-14

我希望通过Recycler View和Model Data调用和召回用户号

在适配器中,我使用了以下代码,但它给出了一个错误

适配器中的代码:

<代码>支架。呼叫setOnClickListener(新视图。OnClickListener(){@Override public void onClick(视图v){

            String number=model.getNumber();
            String call="tel:"+number.trim();
            Intent intent=new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse(call));
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);

        }
    });

错误:在此处输入图像描述

源代码:

public class Adapter extends RecyclerView.Adapter<Adapter.Holder> {

    Context context;
    List<Model> models=new ArrayList<>();

    ModelListener modelListener;

    public Adapter(ModelListener modelListener) {
        this.modelListener = modelListener;
    }

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

    @Override
    public void onBindViewHolder(@NonNull Holder holder, int position) {
        Model model=models.get(position);

        holder.name.setText(model.getName());
        holder.number.setText(model.getNumber());


        holder.call.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                final String number = model.getNumber();
                final Uri numberToCall = Uri.parse("tel:" + number);
                final Intent intent = new  Intent(Intent.ACTION_DIAL, numberToCall);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent);

            }
        });
    }

    @Override
    public int getItemCount() {
        return models.size();
    }

    public class Holder extends RecyclerView.ViewHolder{

        TextView name,number;
        ImageView delete,edit,call;

        public Holder(@NonNull View itemView) {
            super(itemView);

            name=itemView.findViewById(R.id.txt_name);
            number=itemView.findViewById(R.id.txt_number);
            call=itemView.findViewById(R.id.call);

        }
    }
}

共有1个答案

贾烨
2023-03-14

您需要使用requireContext()来避免null。

holder.call.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
      final String number = model.getNumber();
      final Uri numberToCall = Uri.parse("tel:" + number);
      final Intent intent = new  Intent(Intent.ACTION_DIAL, numberToCall);
      context.startActivity(intent); //Use back context
}

更新:

为上下文再添加一个参数。

public Adapter(ModelListener modelListener, Context context) {
    this.modelListener = modelListener;
    this.context = context;
}

当您调用您的适配器时,您传递值上下文。也许你会有这样的东西。

final Adapter mAdapter = new Adapter(modelListener, this);

 类似资料:
  • 问题内容: 我陷入了异步算法: 我有一系列的猫鼬模型: 我想抓取每个集合的所有项目,并将它们放入数组或类似的内容中。如果这样做,则回调的关键字不会引用当前模型,因此我无法知道哪些模型项属于 我也尝试了异步库,但没有成功,因为我总是回到同一问题:无法知道哪个模型在回调内执行find查询。同上,如果我使用诺言。 请帮助我:)你会怎么做? EDIT model.find调用query.find,quer

  • 本文向大家介绍tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式,包括了tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式的使用技巧和注意事项,需要的朋友参考一下 Google提供了一个工具,TensorBoard,它能以图表的方式分析你在训练过程中汇总的各种数据,其中包括Graph结构。 所以我们可以简单的写几行Pyhton

  • 当试图从API获取JSON数据并在RecyclerView上显示时,我得到以下错误: 我已经使用RecyclerView有时,我从来没有这个问题。 主要活动: 适配器: 取景框: 我搜索了很多如何解决这个错误,但我不能。

  • 所以我试图去有一个交错的布局,但列表中的第一项需要跨越两列。前两排也是固定高度。除了跨越两列的第一个项目,其他都正常工作。 我将RecyclerView.Adapter与StaggeredGridLayoutManager一起使用。它似乎不是开箱即用的功能。我假设我可以制作一个自定义布局管理器,但我不知道从哪里开始。我尝试过搜索,但我找不到任何关于如何让项目跨越多列的信息。 下图是我在列表中寻找的

  • 目前,我支持具有以下体系结构的客户机,用于工业制造过程: 我已经在PC上设置了一个WAMP服务器和一个示例网页,我可以在PC上的任何浏览器上看到它作为“本地主机”。我知道如何通过WebView类向Android应用程序添加web浏览器视图。 但是我不知道如何让手机上的浏览器通过TCP连接看到PC上的WAMP服务器。我怎么把这两件事联系起来?

  • 我设计了一个带有地图片段和回收器视图的布局。每个回收器视图项都是cardview(我已经指定了xml布局)。 问题是RecyclerView项无法填满屏幕宽度。 我尝试将layout_width更改为,…但这没有帮助 下面是每个项目的布局 和main_layout 希望任何人都能帮助我。我被困了三天。非常感谢。 ====~=======:===>====1====2===]====3====0.=