我需要在recycler
的适配器的onBindViewHolder
中从ViewHolder
的一个视图的单击事件调用一个Intent。直接这样做我做不到。
public void onBindViewHolder(MyAdapter.MyViewHolder viewHolder, int i) {
viewHolder.button.setonClickListener(new View.onClickListener(
@Override
onClick(View v) {
Intent i=new Intent();
i.setAction("Intent.ACTION_CALL");
i.setData(Uri.parse("tel:1234567890"));
startActivity(i);
}
));
}
这个方法没有生效,一直报错。于是我在Activity中创建了一个公共方法,使用相同的代码。在Adapter构造函数中传入Activity上下文,然后从按钮点击事件中调用了该方法。
((MyActivity)context).makePhoneCall("1234567890");
这个方法可以解决问题,但我觉得应该有更好的方法。 由于我主要是来自C背景,所以不确定。 因此我的问题是,是否有更好或更适合Java编程规范的方法。
startActivity()
方法来自Activity
类。因此,我们需要像这样处理。 - Nigam PatrostartActivity()
方法来自于Context
类。 - Vladimir PetrakovichContext
类,你是对的。 - Nigam Patro