Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从onPostExecute()中的doInBackground()向BaseAdapter添加数据?_Android_Android Activity_Android Asynctask_Android Async Http - Fatal编程技术网

Android 如何从onPostExecute()中的doInBackground()向BaseAdapter添加数据?

Android 如何从onPostExecute()中的doInBackground()向BaseAdapter添加数据?,android,android-activity,android-asynctask,android-async-http,Android,Android Activity,Android Asynctask,Android Async Http,我有一个异步任务,在这个任务中,我使用doInBackground方法通过HTTP从端点获取大量数据。我试图将该数据传递到CustomAdapter,该CustomAdapter在onPostExecute()方法中扩展BaseAdapter。 但数据没有得到更新。 你知道我可能做错了什么吗 public View onCreateView(LayoutInflater inflater, ViewGroup container,

我有一个异步任务,在这个任务中,我使用doInBackground方法通过HTTP从端点获取大量数据。我试图将该数据传递到CustomAdapter,该CustomAdapter在onPostExecute()方法中扩展BaseAdapter。 但数据没有得到更新。 你知道我可能做错了什么吗

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {


            View rootView = inflater.inflate(R.layout.fragment_main, container, false);

            ListView listView = (ListView) rootView.findViewById(R.id.listview_activity);

            EventsAdapter eventsAdapter = new EventsAdapter(getActivity(), objects);
            objects.add(new EventsObject("M2arius", "Shaorma2"));

            listView.setAdapter(eventsAdapter);

            return rootView;
        }

public class FetchEmailActivityTask extends AsyncTask<String, Void, String[]> {

    private final String LOG_TAG = FetchEmailActivityTask.class.getSimpleName();
    private final ProgressDialog dialog = new ProgressDialog(getActivity());

    @Override
    protected void onPreExecute() {
        dialog.setMessage("Please Wait.");
        dialog.setCancelable(true);
        dialog.show();
    }

    @Override
    protected String[] doInBackground(String... params) {

        ...
    try {
        return getActivityDataFromJson(activityJsonStr, limitParams);
    } catch (JSONException e){
        Log.e(LOG_TAG, e.getMessage(), e);
        e.printStackTrace();
    }
    // This will only happen if there was an error getting or parsing the activity.
    return null;
    }

    @Override
    protected void onPostExecute(String[] result){
       super.onPostExecute(result);
       ArrayList<EventsObject> eventsList = new ArrayList<EventsObject>();
        if (dialog.isShowing())
        {
            dialog.dismiss();
        }

        if (result != null){
            objects.add(new EventsObject("Marius", "Shaorma"));
            eventsAdapter = new EventsAdapter(getActivity(), objects);
            if (objects != null) {
                eventsAdapter.notifyDataSetChanged();
            } else {
                Log.v(LOG_TAG, "Objects: " + objects);
            }
        // New data is back from the server.  Hooray!
        }
   }
}
public View onCreateView(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment_main,容器,错误);
ListView ListView=(ListView)rootView.findViewById(R.id.ListView\u活动);
EventsAdapter EventsAdapter=新的EventsAdapter(getActivity(),objects);
添加(新事件对象(“M2arius”、“Shaorma2”);
setAdapter(eventsAdapter);
返回rootView;
}
公共类FetchEmailActivityTask扩展了AsyncTask{
private final String LOG_TAG=FetchEmailActivityTask.class.getSimpleName();
private final ProgressDialog=新建ProgressDialog(getActivity());
@凌驾
受保护的void onPreExecute(){
setMessage(“请稍候”);
对话框。可设置可取消(true);
dialog.show();
}
@凌驾
受保护字符串[]doInBackground(字符串…参数){
...
试一试{
返回getActivityDataFromJson(activityJsonStr,limitParams);
}捕获(JSONException e){
Log.e(Log_标记,e.getMessage(),e);
e、 printStackTrace();
}
//只有在获取或分析活动时出错,才会发生这种情况。
返回null;
}
@凌驾
受保护的void onPostExecute(字符串[]结果){
super.onPostExecute(结果);
ArrayList eventsList=新的ArrayList();
if(dialog.isShowing())
{
dialog.dismise();
}
如果(结果!=null){
添加(新事件对象(“马吕斯”、“绍尔玛”);
eventsAdapter=neweventsadapter(getActivity(),objects);
如果(对象!=null){
eventsAdapter.notifyDataSetChanged();
}否则{
Log.v(Log_标签,“Objects:+Objects”);
}
//新数据从服务器返回。万岁!
}
}
}
onPostExecute
您正在创建适配器的新实例,但ListView保留旧实例。在实例化它之后,再次对其调用setAdapter

if (getView() != null) {
    ListView listView = (ListView) getView().findViewById(R.id.listview_activity);
    if (listView != null) {
       listView.setAdapter(eventsAdapter);
    }
}
if (getView() != null) {
    ListView listView = (ListView) getView().findViewById(R.id.listview_activity);
    if (listView != null) {
       listView.setAdapter(eventsAdapter);
    }
}