Autore Topic: TextView e parsing  (Letto 941 volte)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
TextView e parsing
« il: 25 Giugno 2014, 14:56:48 CEST »
0
Salve amici, volevo chiedervi se gentilmente potevate farmi vedere come inserire in una textview, una stringa che ho ricavato tramite parsing.(ho utilizzato la libreria jsoup per il parsing)
Grazie in anticipo.

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:TextView e parsing
« Risposta #1 il: 25 Giugno 2014, 15:29:17 CEST »
+1
textView.setText(tuaStringa) ?
I numeri contano molto di più del seme.

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #2 il: 25 Giugno 2014, 22:58:47 CEST »
0
textView.setText(tuaStringa) ?

ho fatto come dici tu, però avvio l'applicazione e non me la visualizza la stringa.
Il parsing l'ho provato in java e funziona.


Questa è la mia activity:

Codice (Java): [Seleziona]
public class MainActivity extends Activity {

        private TextView mese;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        // assegno all'oggetto textview il suo riferimento
        mese = (TextView)findViewById(R.id.mese);
       
       
        String url="[url=http://www.gazzettabenevento.it/Sito2009/dettagliocomunicato.php?Id=26226&vcercaCom=";]Gazzetta di Benevento[/url]

                // sfrutta la codifica ISO-8859-1 in modo tale da poter fare l'encode in maniera corretta.
                  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);
                 

                           // 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 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();
                }  
    }

   
   
}

suggerimenti?

Post unito: 26 Giugno 2014, 19:43:03 CEST
C'è qualcuno che può gentilmente aiutarmi? sono in panne :-[
« Ultima modifica: 26 Giugno 2014, 19:43:03 CEST da moskino11, Reason: Merged DoublePost »

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #3 il: 02 Luglio 2014, 18:59:15 CEST »
0
Possibile che nessuno è in grado di aiutarmi?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:TextView e parsing
« Risposta #4 il: 02 Luglio 2014, 20:12:31 CEST »
0
Ma se stampi titolo nel LogCat cosa ti esce?

Codice (Java): [Seleziona]
Log.d("TAG","titolo = "+titolo);
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #5 il: 02 Luglio 2014, 20:17:38 CEST »
0
Ma se stampi titolo nel LogCat cosa ti esce?

Codice (Java): [Seleziona]
Log.d("TAG","titolo = "+titolo);

Ma dove dovrei aggiungere questa riga di codice?

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #6 il: 09 Luglio 2014, 20:10:13 CEST »
0
Ho fatto in quest'altro modo ma non cambia niente, mi stampa error nella TextView ma non c'e modo di fargli stampare il valore corretto

Codice (Java): [Seleziona]
package com.example.turni.farmacie;

import java.io.IOException;
import java.net.MalformedURLException;

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


import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

        private TextView mese;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        try{
                ((TextView)findViewById(R.id.mese)).setText(getMese());
        }catch (Exception ex) {
            ((TextView)findViewById(R.id.mese)).setText("Error");
        }
               
       
                         
    }

   
    protected String getMese() throws Exception {
       
        String url="[url=http://www.gazzettabenevento.it/Sito2009/dettagliocomunicato.php?Id=26226&vcercaCom=";]Gazzetta di Benevento[/url]
        Document 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 titolo = riga.select("div span strong").get(0).text();
   
        // return
        return titolo;
    }
   
   
   
}

Purtroppo anche scritto in questo modo non mi stampa il titolo corretto.E come se la stringa non la vedesse prorpio
Qualche suggerimento per piacere?
« Ultima modifica: 09 Luglio 2014, 20:18:48 CEST da moskino11 »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:TextView e parsing
« Risposta #7 il: 11 Luglio 2014, 19:18:23 CEST »
+1
secondo me ci sono diversi errori:

il primo:  potrebbe essere che quel parsing magari vada in un thread apposito e quindi settare la textview al metodo onPostExecute()

Invece di stampare esser perche non stampi ex.toString()?


Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #8 il: 17 Luglio 2014, 03:07:29 CEST »
0
secondo me ci sono diversi errori:

il primo:  potrebbe essere che quel parsing magari vada in un thread apposito e quindi settare la textview al metodo onPostExecute()

Invece di stampare esser perche non stampi ex.toString()?


In effetti hai ragione tu. Ho modificato il codice, ti posto tutta la classe, la avvio ma al momento del recupero dati nell'attività continua a non visualizzarmi niente e nella console mi stampa "Errore nel parsing" cioè mi manda all'eccezione. Mi potresti dare qualche suggerimento? non capisco cosa sbaglio. Grazie mille

Post unito: 17 Luglio 2014, 03:07:57 CEST
Codice (Java): [Seleziona]
public class MainActivity extends Activity {

        String url="[url=http://www.gazzettabenevento.it/Sito2009/dettagliocomunicato.php?Id=26226&vcercaCom=";]Gazzetta di Benevento[/url]
        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();
            }
          }
       
}
   
       
       
     

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #9 il: 22 Luglio 2014, 12:34:26 CEST »
0
Comunque ho risolto il problema ... il mio errore era dovuto al fatto che utilizzavo come 3° parametro dell'AsyncTask Void, anziché String.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:TextView e parsing
« Risposta #10 il: 22 Luglio 2014, 13:13:16 CEST »
+1
Bravo. Come vedi non avevi bisogno di aiuto ;)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #11 il: 22 Luglio 2014, 13:16:45 CEST »
0
Bravo. Come vedi non avevi bisogno di aiuto ;)


Meglio così

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #12 il: 24 Luglio 2014, 19:55:42 CEST »
0
tonno16 volevo chiederti una cosa. Ho notato una cosa strana nella mia app e volevo chiederti un consiglio. Ho un'attività in cui ho una serie di bottoni ed ogni bottone ha del testo corrispondente che viene prelevato da internet con il metodo che tu mi hai suggerito. funziona tutto però quando si avvia la suddetta activity il testo corrispondente si visualizza in modo successivo e tra un bottone e l'altro passa un po di tempo(stiamo parlando di frazioni di secondo che sia chiaro), però visivamente non è molto bello. Ti volevo chiedere è normale questa cosa oppure esiste un metodo per velocizzare questo processo?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:TextView e parsing
« Risposta #13 il: 24 Luglio 2014, 20:12:46 CEST »
+1
non puoi. Poichè il tuo processo è un processo che va a fare qualcosa con la rete e il traffico dati. Quindi non puoi andare più veloce rispetto alla risposta di un server.

Vedo che usi il progressDialog. Quindi non puoi fare altro.

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:TextView e parsing
« Risposta #14 il: 24 Luglio 2014, 21:45:35 CEST »
0
Ok, grazie per la risposta .