【发布时间】:2021-07-22 12:11:52
【问题描述】:
我希望通过 Recycler View 和 Model Data 调用和调用用户号
在适配器中,我使用了以下代码,但它给出了错误
适配器中的代码:
holder.call.setOnClickListener(new View.OnClickListener(){
@覆盖
public void onClick(View 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);
}
});
错误: enter image description here
源代码:
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);
}
}
}
【问题讨论】:
-
您在这一行出现错误
context.startActivity(intent);因为您的上下文为空
标签: java android android-studio