代码之家  ›  专栏  ›  技术社区  ›  abl online

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

  •  0
  • abl online  · 技术社区  · 11 年前

    我已经使用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 回复  |  直到 11 年前
        1
  •  1
  •   Imdad Sarkar    11 年前

    使用

    activity.startActivity(intent);
    

    而不是

    startActivity(intent);
    

    并确保您在AndroidManifest.xml中具有电话呼叫权限

    <uses-permission android:name="android.permission.CALL_PHONE"/>
    
        2
  •  0
  •   RobinHood    11 年前

    只需在调用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);
    

    此外#

    在内部使用ViewHoder getView() 方法和 set tag to button and get tag 单击以获得视图的正确位置。