0

すべて - ユーザーがスピナーで選択した内容に応じて、21 の異なるアドレスからデータを解析しています。たとえば、ユーザーが「Eldora」を選択した場合、解析元の Web サイトはhttp://www.coloradoski.com/resorts/eldoraです。ただし、「Copper」を選択すると、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はサイトごとに変わるのではなく、アドレスだけです。ユーザーの選択に基づいてそれのみを変更する方法についてのアイデアはありますか?

4

1 に答える 1

0

パラメータを に送信できますAsyncTask。変更:

class AddStringTask extends AsyncTask<Void, String, Void> { 

class AddStringTask extends AsyncTask<String, String, Void> { 

AsyncTaskこれで、次のようにパラメーターをのdoInBackground()関数に送信できます。

new AddStringTask().execute(STRING_THAT_USER_SELECTED)

doInBackground()関数では、渡された文字列を次のように取得できます

String passedString = unused[0]

そして、変数の下に、次progressDialogのような別の変数を定義しますString url

class AddStringTask extends AsyncTask<String, String, Void> {  
ProgressDialog progressDialog;
String url ="http://www.coloradoski.com/resorts/";

渡された文字列を asynctask に取得したら、渡された文字列を に追加しurlて関数を呼び出しJsoup's connect()ます。

 doc = Jsoup.connect(url+passedString).get();

お役に立てれば

于 2013-03-24T22:29:55.157 に答える