我使用LazyAdapter创建自定义列表视图。现在我需要使用可以点击拨打号码的图像。错误发生在图像的onclick方法中。 StartActivity说“LazyAdapter中没有这样的方法”。我发布下面的代码。
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private String[] data;
private String[] project;
Context con;
public LazyAdapter(Context con) {
this.con = con;
}
public LazyAdapter(Activity a, String[] pic, String[] p) {
activity = a;
data = pic;
project = p;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) con
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.item_result_page, null);
------more code----
ImageView ivCall = (ImageView) vi.findViewById(R.id.imageViewIRCall);
ivCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String uri = "tel:9818222333";
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse(uri));
startActivity(intent);
}
});
return vi;
}
我已经提到过这个链接但是startActivity中存在错误。 SO link
答案 0 :(得分:1)
使用
activity.startActivity(intent);
而不是
startActivity(intent);
并确保您拥有AndroidManifest.xml中的电话权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
答案 1 :(得分:0)
只需在调用intent时附加活动上下文!
在Onclick @
中使用#强>
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse(uri));
activity.startActivity(intent);
<强>相反#强>
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse(uri));
startActivity(intent);
另外#
在getView()
方法中使用ViewHoder,在onClick中使用set tag to button and get tag
以获得正确的视图位置。