0

如果 doc 不为空,我想将 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()。要将所有元素添加到 aListView您需要将每个元素保存到某种类型的数组中,例如 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 回答