Android:在自定义列表视图中单击了“获取”按钮

时间:2014-03-10 07:46:16

标签: android listview android-listview android-custom-view android-adapter

我使用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

2 个答案:

答案 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以获得正确的视图位置。