Java 如何使用asynctask使用jsoup进行解析
我必须解析网页并将某个标记的内容存储在ListView中。 现在,我有了这个代码:Java 如何使用asynctask使用jsoup进行解析,java,android,parsing,android-asynctask,jsoup,Java,Android,Parsing,Android Asynctask,Jsoup,我必须解析网页并将某个标记的内容存储在ListView中。 现在,我有了这个代码: public class MainActivity extends Activity { private MyTask myTask; ListView listView; final String URL = "http://en.wikipedia.org"; @Override protected void onCreate(Bundle savedIns
public class MainActivity extends Activity
{
private MyTask myTask;
ListView listView;
final String URL = "http://en.wikipedia.org";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list);
myTask = new MyTask();
myTask.execute(URL);
}
class MyTask extends AsyncTask<String, Void, String>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
String url = params[0];
Document doc;
Elements table = null;
try {
doc = Jsoup.connect(url).get();
table = doc.select("table").select("tbody");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return table.toString();
}
protected void onPostExecute(String result)
{
super.onPostExecute(result);
listView = (ListView) findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.riga);
listView.setAdapter(adapter);
}
}
}
公共类MainActivity扩展活动
{
私有MyTask-MyTask;
列表视图列表视图;
最终字符串URL=”http://en.wikipedia.org";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(listView)findViewById(R.id.list);
myTask=新建myTask();
myTask.execute(URL);
}
类MyTask扩展了AsyncTask
{
@凌驾
受保护的void onPreExecute()
{
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串url=params[0];
文件文件;
元素表=空;
试一试{
doc=Jsoup.connect(url.get();
表格=文件选择(“表格”)。选择(“正文”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回表.toString();
}
受保护的void onPostExecute(字符串结果)
{
super.onPostExecute(结果);
listView=(listView)findViewById(R.id.list);
ArrayAdapter=新的ArrayAdapter(MainActivity.this,R.layout.riga);
setAdapter(适配器);
}
}
}
但是执行总是返回一个白色屏幕。我能做什么??
我确定错误在postExecute方法中,但我看不到它。您确定这个
table=doc.select(“table”).select(“tbody”)代码>返回任何内容?是的,解析器作为java程序进行了测试,并始终返回,将结果记录在onPostExecute
和doInBackground
中。适用于桌面的功能不一定适用于移动设备。选中userAgent
。