ListView适配器崩溃

时间:2013-09-08 00:51:31

标签: java android listview android-asynctask

我正在使用Android Studio开发我的Android应用程序,在这个应用程序中我想要解析页面html,并在列表视图中查看结果,但我收到此错误:

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;
    }

动初始化:

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];

1 个答案:

答案 0 :(得分: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 contextnull就可以getActivity() null。您的adapter = new ParsingArrayAdapter(getActivity, titoli, descrizioni,immagini); ^ // must be returning null 方法必须在此返回{{1}}

{{1}}