开启一个AsyncTask异步任务,抓取网络数据,其后在OnPost里填充listview的adapter,为何异步任务抓取数据为空

开启一个AsyncTask异步任务,抓取网络数据,然后在OnPost里填充listview的adapter,为何异步任务抓取数据为空
RT
开启一个AsyncTask异步任务,
抓取网络数据,
然后在OnPost里填充listview的adapter,
为何异步任务抓取数据为空
抓取的语句没有问题(已测)

直接上代码
//handler接收数据,将adapter装载到Listview中
private Handler messageListener = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 111:
newslist.setAdapter(newsadapter);
break;}}};
//在Oncreat里开启一个异步任务(OnCreat里除了这个异步,后面还开启了另一个异步任务和一个线程,这个会有影响吗?)
      new GrabNewslist().execute();

//异步任务代码
class GrabNewslist extends
AsyncTask<String, Void, ArrayList<HashMap<String, Object>>> {
@Override
protected ArrayList<HashMap<String, Object>> doInBackground(
String... arg0) {
// TODO Auto-generated method stub
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
try {
Document doc = Jsoup.connect(path).timeout(5000).get();
if (doc != null) {
Elements newsdiv = doc.getElementsByClass("d_list_txt");
Elements links = newsdiv.select("ul").select("a");
for (Element link : links) {
HashMap<String, Object> map = new HashMap<String, Object>();
String linktext = link.text();
String linkhref = link.attr("href");
map.put("newstext", linktext);
map.put("newslink", linkhref);
data.add(map);
}
}
} catch (IOException e) {
e.printStackTrace();
}
                        Log.i("data","--------"+data.isEmpty());
return data;
}

@Override
protected void onPostExecute(ArrayList<HashMap<String, Object>> result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
newsadapter = new SimpleAdapter(Main.this, result,
R.layout.list_item, new String[] { "newstext" },
new int[] { R.id.newsTitle });
Message msg = Message.obtain();
msg.what = 111;
messageListener.sendMessage(msg);
}
}

请大牛帮看下,困扰了我几天了
程序运行并不报错,但是就是listview不显示
用Log打了之后发现,异步任务里的doc是空的,data是空的,自然后面装载的adapter也是空的

------解决方案--------------------
真正的原因是你的doc没有获取到数据,你检查看看是不是doc获取数据的地方出问题了
------解决方案--------------------
只有这么几句代码,没有log,分析问题也不简单。
我说一下如果是我怎么排除问题吧。

@Override
protected void onPostExecute(ArrayList<HashMap<String, Object>> result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
newsadapter = new SimpleAdapter(Main.this, result,
R.layout.list_item, new String[] { "newstext" },
new int[] { R.id.newsTitle });
Message msg = Message.obtain();
msg.what = 111;
messageListener.sendMessage(msg);
}
上面这段的result或许是你的数据源吧,将这里的result 换成 假数据,也就是你自己填写一个result填写到
newsadapter 中,看是否可以刷出来数据。

如果你排除了上面的问题,问题就出在你的抓取过程中。
关于抓取过程中的问题,将所有的异常都打印出来。这个是需要的,怀疑你直接异常了。