构造函数ArrayAdapter onclick问题

时间:2012-06-27 13:05:15

标签: android listview

当我点击按钮搜索时,我需要在列表视图中显示图像和文本,但它在setListAdapter(new MobileArrayAdapter(this, PNames,PImages));中给我一个错误..我有两个班级。 当我显示onformLoad它工作但是,现在我需要使用buttton显示它,这里我的两个classess:

    B_KZN.setOnClickListener(new View .OnClickListener() {

        @Override
            public void onClick(View Kv) {
    // TODO Auto-generated method stub

   JSONObject json = JSONfunctions.getJSONfromURL("http://10.0.2.2/php/p.php");

   try{

            JSONArray  earthquakes = json.getJSONArray("SKZN");

           for(int i=0;i<earthquakes.length();i++){                     

            JSONObject e = earthquakes.getJSONObject(i);    
            String BookName = e.getString("P_City");
        PNames.add(BookName);
    String BookImg = e.getString("Pname");
        PImages.add(BookImg);
    }       
        }catch(JSONException e){
         Log.e("log_tag", "Error parsing data "+e.toString());
    }                   
        setListAdapter(new MobileArrayAdapter(this, PNames,PImages));

我的第二堂课:

public class MobileArrayAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final String[] myBookNamelist = null;
    private ArrayList<String> MyP = new ArrayList<String>();
    private ArrayList<String> myPurl = new ArrayList<String>();

    public MobileArrayAdapter(Context context,ArrayList<String> Bname,ArrayList<String> BUrl) {
        super(context, R.layout.list_mobile, Bname);
        this.context = context;
        this.MyP = Bname;
        this.myPurl = BUrl;
    }

这里我的错误:The constructor MobileArrayAdapter(new View.OnClickListener(){}, ArrayList<String>, ArrayList<String>) is undefined ... 它显示我的红线。

3 个答案:

答案 0 :(得分:3)

您宣布thisContext。但是你在View.OnClickListener

类型的匿名类中

试试这个:

 setListAdapter(new MobileArrayAdapter(YourActivityName.this, PNames,PImages));

答案 1 :(得分:3)

构造函数的第一个参数是Context类型,但是当将this传递给构造函数时,您位于View.OnClickListener的子类中。当您处于(最有可能)活动的内部类中时,您只需要指示您要传递父活动实例。

在创建适配器的位置,使用MyActivity.this

setListAdapter(new MobileArrayAdapter(MyActivity.this, PNames,PImages));

答案 2 :(得分:0)

在您为ListView设置适配器的活动中使用此代码,它将起作用

setListAdapter(new MobileArrayAdapter(yourActivityname.this, PNames,PImages));