TextView和解析jsoup

时间:2014-07-11 18:10:56

标签: android textview jsoup

我想问一下为什么我的代码不会打印我通过解析获取的textView中的数据。有什么建议吗?非常感谢你

public class MainActivity extends Activity {

    private TextView mese;

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

    mese = (TextView)findViewById(R.id.mese);
    String url="[url=http://www.gazzettabenevento.it/Sito2009/dettagliocomunicato.php?Id=26226&vcercaCom=";]Gazzetta di Benevento[/url]

            Document doc;
            try {
                    doc = Jsoup.parse(new java.net.URL(url).openStream(), "ISO-8859-1", url);
                    Element tbody = doc.select("table[width=809]").first().child(0);
                       Elements rows = tbody.children();
                       Element riga = rows.get(4);
                       String titolo = riga.select("div span strong").get(0).text();
                       mese.setText(titolo);
            } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            }   
}

}

1 个答案:

答案 0 :(得分:0)

我通过将解析放在一个线程中来修改代码,但是logcat我打印“错误解析”而TextView总是空的

public class MainActivity extends Activity {

String url="http://www.gazzettabenevento.it/Sito2009/dettagliocomunicato.php?Id=26226&vcercaCom=";
ProgressDialog mProgressDialog;


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

    // Execute Title AsyncTask
    new Mese().execute();


}


// nome del mese Asyntask
private class Mese extends AsyncTask<Void, Void, Void>
{

    String mese;
    Document doc;

    @Override
    protected void onPreExecute() {
      super.onPreExecute();
      mProgressDialog = new ProgressDialog(MainActivity.this);
      mProgressDialog.setTitle("Recovery data");
      mProgressDialog.setMessage("Loading...");
      mProgressDialog.setIndeterminate(false);
      mProgressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub

        try 
        {
            //connettiti al sito
            // sfrutta la codifica ISO-8859-1 in modo tale da poter fare l'encode in maniera corretta.
            doc = Jsoup.parse(new java.net.URL(url).openStream(), "ISO-8859-1", url);

            Element tbody = doc.select("table[width=809]").first().child(0);


               // mi prendo tutti i figli di tbody
               Elements rows = tbody.children();

               // cancello le prime 4 righe corrispondenti a <tr>
               Element riga = rows.get(4);

               // cambiando i valori di get, riesco a prendermi tutti i titoli
               String mese = riga.select("div span strong").get(0).text();

        }

        catch (Exception e) 
        {
           // gestione dell'eccezione
           // ad esempio mostrare messaggio di errore o altro (qui nel logcat)
           Log.e("ESEMPIO", "ERRORE NEL PARSING");
        }


        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
       // assegno all'oggetto textview il suo riferimento
       TextView tvMese = (TextView)findViewById(R.id.mese);
       tvMese.setText(mese);
       mProgressDialog.dismiss();
    }
  }