在 AsyncTask 中设置 ListAdapter 时出错

Error setting ListAdapter in AsyncTask

这是我的 AsyncTask 的 onPostExecute() Class

myNewsListView = (ListView)findViewById(R.id.newsListView);
                CustomListAdapter customListAdapter = new CustomListAdapter(values, getApplicationContext());
                myNewsListView.setAdapter(customListAdapter);

这是 CustomListAdapter Class

public class CustomListAdapter extends BaseAdapter {

    String Title[];
    Context ctxt;
    LayoutInflater myInflater;

    public CustomListAdapter(String arr[], Context c)
    {
        Title = arr;
        ctxt = c;
        myInflater = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return Title.length;
    }

    @Override
    public Object getItem(int i) {
        return Title[i];
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        view = myInflater.inflate(R.layout.custom_list, viewGroup);
        TextView titleText = (TextView)view.findViewById(R.id.newsTitle);
        TextView descriptionText = (TextView)view.findViewById(R.id.newsDescription);
        ImageView imageView = (ImageView)view.findViewById(R.id.newsImage);

        titleText.setText(Title[i]);

        return view;
    }
}

每次尝试在此行设置适配器时,我都会遇到空指针异常 myNewsListView.setAdapter(customListAdapter);

这是 logCat 输出。

FATAL EXCEPTION: main
    java.lang.NullPointerException
            at samarth.learning.http.MainActivity$MyAsyncTask.onPostExecute(MainActivity.java:674)
            at samarth.learning.http.MainActivity$MyAsyncTask.onPostExecute(MainActivity.java:374)
            at android.os.AsyncTask.finish(AsyncTask.java:631)
            at android.os.AsyncTask.access0(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:213)
            at android.app.ActivityThread.main(ActivityThread.java:5225)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)

我做错了什么?非常感谢任何建议和帮助。

如果您在 myNewsListView.setAdapter(customListAdapter) 上得到 java.lang.NullPointerException,您的 (ListView)findViewById(R.id.newsListView) 可能会得到 NULL。

您应该在 AsyncTask 之外执行 myNewsListView = (ListView)findViewById(R.id.newsListView)。 延伸阅读:Can't access “findViewById” in AsyncTask