首页 > 解决方案 > 与 Asynctask 适配的 Listview 不起作用

问题描述

我正在使用 Jsoup 和 Asynctask 抓取一些信息。

jsoup 和 asynctask 运行良好,但使用 listview 和适配器,我的模拟器没有显示任何爬行结果。

我尝试了很多东西,但我找不到任何理由。

import androidx.appcompat.app.AppCompatActivity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListView;

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    final ArrayList<String> title = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    swCrawling SW_crawling = new swCrawling();
    SW_crawling.execute();

}

//Params, Progress, Result
private class swCrawling extends AsyncTask<Void, Void, Void> { 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... params) {
        final StringBuilder builder = new StringBuilder();
        String url1 = "";
        String my_link = null;

        try {
            Connection con = Jsoup.connect(url1);
            Document doc = con.get();

            Elements mElementDatas = doc.select("#body_line > nobr ");
            String text = mElementDatas.text();

            int i=0;
            for (Element elem : mElementDatas) {
                String my_title = elem.select("a span b").text();                    
                title.add(my_title);
                                   
                i++;
                if(i>15) {
                    break;
                }
            }
        } catch (IOException e) {
            builder.append("Error");
        }
        return null;

    }

}

protected void onPostExecute(Void result) {
    ListView list=(ListView) findViewById(R.id.listview);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, title);
    
    list.setAdapter(adapter);       

}
}

xml 代码非常简单。只是一个列表视图!

我真的希望我能得到一些建议。

标签: javaandroid

解决方案


推荐阅读