2012-06-27 86 views
0

我需要在我的列表视图中显示图像和文本时,当我单击按钮搜索,但它给我一个错误在我的setListAdapter(new MobileArrayAdapter(this, PNames,PImages)); ..我有两个类。 当我显示onformLoad它的工作,但现在我需要用一个按钮移到,在这里我的两个类新来显示它:构造函数ArrayAdapter onclick问题

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

您声明this为您的Context。但你是在Annoymous类类型的View.OnClickListener

试试这个:

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

构造函数的第一个参数是Context类型的,你是View.OnClickListener一个子类中,但是经过this的构造函数时。由于您处于(很可能)活动的内部类中,因此只需指出您想要传递父活动实例即可。

如果你正在创建的适配器,使用MyActivity.this

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

方式并重新说出来:p – Blundell

+0

@布伦德尔我请你原谅?我独自写了这篇文章,同时你写了你的。不幸的是,SO不会显示“秒前”,只有几分钟。你可能会看到我们的两个答案相差约5秒。我不喜欢别人复制我的答案,而我自己也不这样做。 –

+0

它也显示编辑也是你的答案,我看到你的原始答案,然后你的变化。别担心 – Blundell

0

使用此代码在您的活动,您可以设置适配器将您的ListView,也将努力把我的答案

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