大约一天以来,我一直在用头撞墙。我希望有人能帮帮忙。
我的程序将一些 Json 加载并解析到异步任务中的对象数组中。这个异步任务是从我的 ListFragment 类中调用的,并且数据会在 onPostExecute 中发回。不会引发任何错误,并且列表加载动画应该会消失。但无论我做什么,列表都不会被填充。
我肯定会正确返回和解析数据,并且我尝试在 onPostExecute 中使用一个简单的数组和适配器,以确保它不是我的适配器类并且它仍然不起作用。
我已将下面的代码简化为一个示例。下面的代码等待 1 秒,然后删除加载动画。但不填充列表。如果您从 doInBackground 方法中删除睡眠,它会完美运行。
public class MyFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
AsyncTask<Void, Void, String> task = new AsyncTask<Void,Void,String>()
{
@Override
protected String doInBackground(Void... params) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1, values);
setListAdapter(adapter);
}
};
task.execute();
}
}
正如我所说,如果您删除我用来模拟 json 加载的 Thread.sleep(1000) ,它工作正常。
如果这有什么不同,我正在使用 2.3 的片段支持库。
谢谢史蒂夫