2012-06-27 3 views
0

Мне нужно отображать изображение и текст в моем списке, когда я нажимаю кнопку поиска, но он дает мне ошибку в моем setListAdapter(new MobileArrayAdapter(this, PNames,PImages)); .. У меня есть два класса. Когда я показываю onformLoad он работает, но теперь мне нужно, чтобы отобразить его с помощью buttton, вот мои два classess:Конструктор ArrayAdapter onclick issue

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, однако при переходе this конструктору вы внутри подкласса View.OnClickListener , Поскольку вы находитесь во внутреннем классе своей (наиболее вероятной) активности, вам просто нужно указать, что вы хотите передать экземпляр родительской активности.

Где вы создаете адаптер, используйте MyActivity.this:

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

способ взять мой ответ и повторное слово: p – Blundell

+0

@Blundell Прошу прощения? Я написал это в то же время, что и ты, самостоятельно. К сожалению, SO не показывает «секунды назад», только минуты. Вероятно, вы увидите, что наши два ответа отличаются примерно на 5 секунд. Мне не нравится, когда другие копируют мои ответы, и я не делаю этого сам. –

+0

Он также показывает, что ваш ответ слишком прав, и я посмотрел ваш первоначальный ответ, затем ваше изменение. Не волнуйся – Blundell

0

Используйте этот код в вашей деятельности, где установлен адаптер к ListView, он будет работать

setListAdapter(new MobileArrayAdapter(yourActivityname.this, PNames,PImages)); 
Смежные вопросы