我想问一下为什么我的代码不会打印我通过解析获取的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();
}
}
}
答案 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();
}
}