0

doc が null でない場合、すべてのデータを doc から ListView に入れたいのですが、どうすればよいですか? 書く場合 Element = doc.select("someSelector"); 次に、それを ListView に入れることはできません。

私の英語でごめんなさい(私はロシア人です)

コード:

package com.example.phpfunctions;

import java.io.IOException;
import java.util.Locale;

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

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.widget.AutoCompleteTextView;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private final String lang = Locale.getDefault().getLanguage();
    private final String functions_list = "someURL";
    private final ListView lv = (ListView) findViewById(R.id.listView1);
    Document doc = null;
    AutoCompleteTextView input;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new getData().execute(functions_list);

        if(doc != null)
        {

            //--Write code here--//

        }
        else
            Toast.makeText(this, "error", Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    class getData extends AsyncTask<String, Void, Document> {

        protected Document doInBackground(String... urls) {

            try {
                Document data = Jsoup.connect(urls[0]).get();
                return data;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

                return null;
            }



        }

        protected void onPreExecute() {
        }

        protected void onPostExecute(Document result) {
            doc = result;
        }

    }

}
4

1 に答える 1

0

を呼び出すときに*をワイルドカード文字として使用すると、ページからすべての要素を選択できますdoc.select()。すべての要素を a に追加するには、ListView各要素を何らかのタイプの配列に保存する必要があります。たとえば、 anArrayListも使用しArrayAdapterます。

例えば:

    ArrayList<String> htmlElements = new ArrayList<String>();

    if(doc != null)
    {
        //--Write code here--//
        Elements elements = doc.select("*"); // select all elements from that page

        for (Element e : elements) {
            htmlElements.add(e.html()); // or e.text(), depends on what you require
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, htmlElements);
        lv.setAdapter(adapter);
    }

ドキュメントの本文の要素のみを一覧表示する場合は、doc.body().select("*")代わりに を呼び出します。ドキュメントは、他のいくつかのトリックについて読む価値があります。

于 2013-11-03T10:26:22.110 に答える