你可以在AsyncTask中的onPostExecute方法中去声明Adapter,然后赋值撒,这个是在数据获取之后的

解决方案 »

  1.   

    在onPostExecute()里声明adapter
    总是会报出
    The constructor ArrayAdapter<String>(MainActivity.GrabData, int, ArrayList<String>) is undefined
      

  2.   


    在onPostExecute()里声明adapter
    总是会报出
    The constructor ArrayAdapter<String>(MainActivity.GrabData, int, ArrayList<String>) is undefined
      

  3.   


    在onPostExecute()里声明adapter
    总是会报出
    The constructor ArrayAdapter<String>(MainActivity.GrabData, int, ArrayList<String>) is undefinedclass TestTask extends AsyncTask<String, Void, ArrayList<String>> {        @Override
            protected ArrayList<String> doInBackground(String... params) {
                // TODO Auto-generated method stub
                return null;
            }        @Override
            protected void onPostExecute(ArrayList<String> result) {
                // TODO Auto-generated method stub
                super.onPostExecute(result);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, 
                        android.R.layout.simple_list_item_1,result);
            }
            
        }
      

  4.   

    像这样就可以了,不会报错,你刚才那个报错是MainActivity.GrabData这个有问题,这里是传入context对象
      

  5.   


    我照你的写法改了    在OnPostExecute里传入result设置了adapter  也没有报错   但是运行起来  实际的data还是空的  
    贴下我的代码 class GetListData extends
    AsyncTask<String, Void, ArrayList<HashMap<String, Object>>> { @Override
    protected ArrayList<HashMap<String, Object>> doInBackground(
    String... arg0) {
    // TODO Auto-generated method stub
    try {
    Document doc = Jsoup.connect(path).timeout(5000).get();
    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 linkhref = link.attr("href");
    String linktext = link.text();
    map.put("newslink", linkhref);
    map.put("newstext", linktext);
    newsdatalist.add(map);
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return newsdatalist;
    } @Override
    protected void onPostExecute(ArrayList<HashMap<String, Object>> result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    SimpleAdapter newsadapter = new SimpleAdapter(Main.this, result,
    R.layout.list_item, new String[] { "newstext" },
    new int[] { R.id.newsTitle });
    newslist.setAdapter(newsadapter);
    }
    }
      

  6.   

    doInBackground里的抓取方法肯定没问题因为如果我不是用异步抓取直接在UI线程里抓取的话就能正常显示出listview但是一旦使用了异步  adapter 不管是设置在 oncreat里 还是OnpostExecute里都不能显示出listview
      

  7.   

    你这就要数据使用handler发送到UI线程进行添加到listview中