2013-09-08 2 views
-1

я занимаюсь разработкой моего приложения для Android с Android Studio, в этом приложении я хочу сделать парсер страницы HTML, и увидеть результаты в ListView, но я получил эту ошибку:ListView адаптер Краш

java.lang.NullPointerException 
     at android.widget.ArrayAdapter.init(ArrayAdapter.java:310) 
     at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:104) 
     at com.megadown.megacodownloader.ParsingArrayAdapter.<init>(ParsingArrayAdapter.java:30) 
     at com.megadown.megacodownloader.Tab_Search$ParsingPaginaWeb.onPostExecute(Tab_Search.java:256) 
     at com.megadown.megacodownloader.Tab_Search$ParsingPaginaWeb.onPostExecute(Tab_Search.java:118) 
     at android.os.AsyncTask.finish(AsyncTask.java:631) 
     at android.os.AsyncTask.access$600(AsyncTask.java:177) 
     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4898) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
     at dalvik.system.NativeStart.main(Native Method) 
09-08 02:46:26.289 3004-3004/? E/Launcher: Error finding setting, default accessibility to not found: accessibility_enabled 

И я не понял, почему я получил эту ошибку! Это код ошибки строки:

adapter = new ParsingArrayAdapter(getActivity, titoli, descrizioni,immagini); 
      lista.setAdapter(adapter); 

ParsingArrayAdapter:

public class ParsingArrayAdapter extends ArrayAdapter<String>{ 

    //riferimenti statici alle risorse e agli id 
    private final static int LAYOUT = R.layout.riga_listview; 
    private final static int TITOLO = R.id.riga_listview_titolo; 
    private final static int DESCRIZIONE = R.id.riga_listview_descrizione; 
    private final static int IMMAGINE = R.id.imageView; 

    ArrayList<String> titoli; //lista dei titoli 
    ArrayList<String> descrizioni; 
    //ArrayList<Integer> immagini;//lista delle descrizioni 
    int [] immagini; 
    Context c; //context 
    LayoutInflater inflater; //layout inflater 

    public ParsingArrayAdapter(Context context, ArrayList<String> titoli, ArrayList<String> descrizioni, int[] immagini) 
    { 
     super(context,TITOLO); 
     this.c = context; 
     this.titoli = titoli; 
     this.descrizioni = descrizioni; 
     this.immagini = immagini; 
     this.inflater = LayoutInflater.from(c); 
    } 

    @Override 
    public int getCount() 
    { 
     return titoli.size(); //ritorno lunghezza lista (= numero dei titoli) 
    } 

    //quando la lista richiede una view 
    @Override 
    public View getView(int pos,View view,ViewGroup parent) 
    { 
     CacheRiga cache; //cache 
     if(view==null)//se � la prima volta che viene richiesta la view 
     { 
      // creo la view ma non l'attacco alla lista in quanto devo ancora modificare 
      // i testi delle textview 
      view = inflater.inflate(LAYOUT, parent,false); 
      cache = new CacheRiga(); //inizializzo la cache 
      cache.titolo = (TextView) view.findViewById(TITOLO); //collego titolo 
      cache.descrizione = (TextView) view.findViewById(DESCRIZIONE);//collego descrizione 
      cache.img = (ImageView) view.findViewById(IMMAGINE); 
      view.setTag(cache);//collego view con cache 
     } 
     else 
     { 
      cache = (CacheRiga) view.getTag(); //altrimenti prendo la cache dalla view 
     } 

     cache.titolo.setText(titoli.get(pos)); //imposto il titolo 
     cache.descrizione.setText(descrizioni.get(pos)); 
     // if(pos>0) 
     //{ 
      cache.img.setImageResource(immagini[pos]); 
     //} 
     // e la descrizione 

     return view; 
    } 

    private class CacheRiga { // classe per la cache delle righe 
     public TextView titolo; // cache titolo 
     public TextView descrizione; // cache descrizione 
     public ImageView img; 
    } 

INITILIZATION:

ArrayList<String> titoli; //lista dei titoli 
     ArrayList<String> descrizioni; //lista delle descrizioni 
     // ArrayList<Integer> immagini; 
     int [] immagini; 


     titoli = new ArrayList<String>(); 
     descrizioni = new ArrayList<String>(); 
     //immagini = new ArrayList<Integer>(); 
     immagini = new int[500]; 
+0

Нам нужно больше информации от этого. Хотя я предполагаю, что дело в том, что где-то в вашем конструкторе ParsingArrayAdapter вы передаете нулевой объект в базовый конструктор ArrayAdapter. – kcoppock

+0

Один из этих аргументов должен быть «null». –

+0

Добавлено! :) read please – lillogoal

ответ

1

init() метод отображается в журнале ошибок реализована в виде такого

private void init(Context context, int resource, int textViewResourceId, List<T> objects) { 
    mContext = context; 
    // line 310 below 
    mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    mResource = mDropDownResource = resource; 
    mObjects = objects; 
    mFieldId = textViewResourceId; 
} 

Единственная вещь, которая может бросить NullPointerException на эту линию context, если это null. Ваш метод getActivity() должен вернуть null здесь

adapter = new ParsingArrayAdapter(getActivity, titoli, descrizioni,immagini); 
            ^// must be returning null 
+0

Спасибо, так как решить мою проблему? В моем адаптаторе, что я должен добавить в рабочее приложение? – lillogoal

+0

@lillogoal Убедитесь, что 'getActivity()' не возвращает 'null'. –

+0

Я не знаю, но я не думаю, что rwturn null .. Я использую метод getactivity, потому что я расширяю свой класс во Фрагменте ... как решить эту проблему? – lillogoal

Смежные вопросы