全部 - 我根据用户在微调器中选择的内容解析来自21个不同地址的数据。例如,如果用户选择“Eldora”,则应解析的网站为http://www.coloradoski.com/resorts/eldora。但如果他们选择“铜”应该从http://www.coloradoski.com/resorts/copper解析。问题是,只有地址改变,而不是实际的标签。所以,我可以将所有内容复制到21个不同的类中,只需更改地址,但似乎应该有一种方法可以根据用户选择而不是实际标签来更改地址。这是我的代码:
class AddStringTask extends AsyncTask<Void, String, Void> {
ProgressDialog progressDialog;
@Override
protected void onPreExecute()
{
progressDialog= ProgressDialog.show(MainActivity.this, "Loading Data","Getting from http://eldora.com/", true);
//do initialization of required objects objects here
};
@Override
protected Void doInBackground(Void... unused) {
org.jsoup.nodes.Document doc = null;
try {
doc = Jsoup.connect("http://www.coloradoski.com/resorts/eldora").get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
docTitle = doc.select("div#column-narrow.grid_310.alpha h1").first().text();
AnnualSnowfallString = doc.select("dl#mountain-stats dt + dd").first().text();
AreaString = doc.select("dl#mountain-stats dt + dd + dt + dd ").first().text();
BaseElevationString = doc.select("dl#mountain-stats dt + dd +dt + dd + dt + dd").first().text();
SummitElevationString = doc.select("dl#mountain-stats dt + dd + dt + dd + dt + dd + dt + dd").first().text();
HoursofOperationString = doc.select("dl#mountain-stats dt + dd + dt + dd + dt + dd + dt + dd + dt + dd").first().text();
SeasonDatesString = doc.select("dl#mountain-stats dt + dd + dt + dd + dt + dd + dt + dd + dt + dd + dt + dd").first().text();
NotesString = doc.select("dl#mountain-stats dt + dd + dt + dd + dt + dd + dt + dd + dt + dd + dt + dd + dt + dd").first().text();
return null;
}
dl#mountain-stats dt + dd + dt + dd
不会因站点而异,只是地址。关于如何仅根据用户选择进行更改的任何想法?
答案 0 :(得分:0)
您可以将参数发送到AsyncTask
。改变你的:
class AddStringTask extends AsyncTask<Void, String, Void> {
到
class AddStringTask extends AsyncTask<String, String, Void> {
现在您可以将参数发送到AsyncTask
的{{1}}函数,如下所示:
doInBackground()
在您的new AddStringTask().execute(STRING_THAT_USER_SELECTED)
函数中,您可以使用
doInBackground()
在String passedString = unused[0]
变量下,定义另一个变量,如progressDialog
:
String url
在将传递的字符串传递给asynctask之后,将class AddStringTask extends AsyncTask<String, String, Void> {
ProgressDialog progressDialog;
String url ="http://www.coloradoski.com/resorts/";
附加到传递的字符串并调用url
函数。
Jsoup's connect()
希望这有帮助