Autore Topic: riempire spinner con dati parsati  (Letto 1462 volte)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
riempire spinner con dati parsati
« il: 05 Gennaio 2013, 14:13:50 CET »
0
Salve sto cercando di inserire i dati parsati da una pagina html in uno spinner, ma quando lancio l'aplicazione l'app va in crash; il codice è il seguente:


Classe Parsing

public class Parsing {
   

   
      
   public HashMap<String,String> parserRegione() throws IOException {
      HashMap<String,String> regione=new HashMap<String,String>();
      Document doc = Jsoup.connect("https://www3.subito.it/ai/form/4?t=1").get();
      Elements categoria = doc.select("div.value > select#category > option");
      for( Element e:categoria) {
         
      
         regione.put(e.html(),e.val());
      }
      return regione;
}}


Classe MainActivity

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        Spinner regione = (Spinner) findViewById(R.id.spinnerRegioni);
        try {
           HashMap<String,String> hashRegioni=(new Parsing()).parserRegione();
      ArrayList<String> arrayRegioni=new ArrayList<String>();
      for(String s:hashRegioni.keySet())
         arrayRegioni.add(s);
      ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, arrayRegioni);
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      regione.setAdapter(adapter);
        } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
       
      
       }

Qualcuno mi potrebbe aiutare per piacere ??
Grazie in anticipo.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
R: riempire spinner con dati parsati
« Risposta #1 il: 05 Gennaio 2013, 17:27:50 CET »
0
Logcat?

Inviato dal mio Galaxy Nexus con Tapatalk 2


Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #2 il: 06 Gennaio 2013, 13:35:32 CET »
0
Il logcat è il seguente :



01-06 13:32:07.563: I/dalvikvm(259): Could not find method org.jsoup.Jsoup.connect, referenced from method pervasive.com.subito.Parsing.parserRegione
01-06 13:32:07.572: W/dalvikvm(259): VFY: unable to resolve static method 3159: Lorg/jsoup/Jsoup;.connect (Ljava/lang/String;)Lorg/jsoup/Connection;
01-06 13:32:07.572: D/dalvikvm(259): VFY: replacing opcode 0x71 at 0x0007
01-06 13:32:07.572: D/dalvikvm(259): VFY: dead code 0x000a-0031 in Lpervasive/com/subito/Parsing;.parserRegione ()Ljava/util/HashMap;
01-06 13:32:07.582: D/AndroidRuntime(259): Shutting down VM
01-06 13:32:07.582: W/dalvikvm(259): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
01-06 13:32:07.602: E/AndroidRuntime(259): FATAL EXCEPTION: main
01-06 13:32:07.602: E/AndroidRuntime(259): java.lang.NoClassDefFoundError: org.jsoup.Jsoup
01-06 13:32:07.602: E/AndroidRuntime(259):    at pervasive.com.subito.Parsing.parserRegione(Parsing.java:23)
01-06 13:32:07.602: E/AndroidRuntime(259):    at pervasive.com.subito.MainActivity.onCreate(MainActivity.java:34)
01-06 13:32:07.602: E/AndroidRuntime(259):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-06 13:32:07.602: E/AndroidRuntime(259):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-06 13:32:07.602: E/AndroidRuntime(259):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-06 13:32:07.602: E/AndroidRuntime(259):    at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-06 13:32:07.602: E/AndroidRuntime(259):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-06 13:32:07.602: E/AndroidRuntime(259):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 13:32:07.602: E/AndroidRuntime(259):    at android.os.Looper.loop(Looper.java:123)
01-06 13:32:07.602: E/AndroidRuntime(259):    at android.app.ActivityThread.main(ActivityThread.java:4627)
01-06 13:32:07.602: E/AndroidRuntime(259):    at java.lang.reflect.Method.invokeNative(Native Method)
01-06 13:32:07.602: E/AndroidRuntime(259):    at java.lang.reflect.Method.invoke(Method.java:521)
01-06 13:32:07.602: E/AndroidRuntime(259):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-06 13:32:07.602: E/AndroidRuntime(259):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-06 13:32:07.602: E/AndroidRuntime(259):    at dalvik.system.NativeStart.main(Native Method)

Grazie mille ricky per la mano he mi stai dando,io non ho proprio idea di come si legge il logcat

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #3 il: 06 Gennaio 2013, 14:41:42 CET »
0
1) Controlla che il jar della libreria Jsoup sia nella cartella /libs del progetto
2) Metti tutta quella roba in un AsyncTask

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #4 il: 06 Gennaio 2013, 14:53:42 CET »
0
1) Controlla che il jar della libreria Jsoup sia nella cartella /libs del progetto
Ho controllato e nella cartella lib c'e solo android-support-v4.jar ; la libreria jsoup invece mi è stata caricata in Referenced Libraries.
La devo spostare in /lib? Se si basta andare nel workspace aprire la cartella lib e copiare la cartella Jsoup? é corretto questo metodo?

2) Metti tutta quella roba in un AsyncTask
Scusami ma non ho idea di cosa sia un AsyncTask,a cosa serve?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #5 il: 06 Gennaio 2013, 15:00:34 CET »
0
1) Controlla che il jar della libreria Jsoup sia nella cartella /libs del progetto
Ho controllato e nella cartella lib c'e solo android-support-v4.jar ; la libreria jsoup invece mi è stata caricata in Referenced Libraries.
La devo spostare in /lib? Se si basta andare nel workspace aprire la cartella lib e copiare la cartella Jsoup? é corretto questo metodo?

Si, esatto. Devi spostarla nella cartella lib.

Citazione
2) Metti tutta quella roba in un AsyncTask
Scusami ma non ho idea di cosa sia un AsyncTask,a cosa serve?

Serve a fare in modo che la chiamata http necessaria a scaricare la pagina e il parsing dell'html avvengano in un thread separato.
Questo non è solo un consiglio ma è necessario affinché non tu riceva un eccezione dovuta al fatto che stai bloccando il thread principale.
Cerca nel forum per capire come integrarlo nel tuo codice.

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #6 il: 06 Gennaio 2013, 15:10:22 CET »
0
Scusami la domanda, ho copiato Jsoup in lib, adesso posso cancellarlo "Referenced Libraries" dove c'e dentro Jsoup?
Per quanto riguarda l'AsyncTask adesso mi documenterò un po perché non ho proprio idea di come si fa .
Grazie mille per la dritta ;)
A

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #7 il: 06 Gennaio 2013, 15:15:33 CET »
0
Scusami la domanda, ho copiato Jsoup in lib, adesso posso cancellarlo "Referenced Libraries" dove c'e dentro Jsoup?

Si, puoi cancellarlo.

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #8 il: 06 Gennaio 2013, 15:16:09 CET »
0
Ok grazie

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #9 il: 06 Gennaio 2013, 15:25:44 CET »
0
noooooo ho cancellato le librerie di android 4.1.2 adesso mi da errore dappertutto  -.- come posso risolvere?

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #10 il: 07 Gennaio 2013, 12:22:23 CET »
0
Ricky ciao,senti volevo chiederti una cosa,io praticamente sto facendo un'applicazione di un sito e in particolar modo mi sto vedendo la parte dellinserimento di un annuncio.Ora la mia domanda era questa: mi serve fare il parsing del sito?
Un'altra domanda che vorrei farti è: nel momento in cui io compilo i vari dati richiesti per pubblicare l'annuncio, cosa devo utilizzare per poterli inviare al sito? Grazie in anticipo per la risposta

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:riempire spinner con dati parsati
« Risposta #11 il: 08 Gennaio 2013, 15:47:47 CET »
0
Ciao moskino,
il sito è tuo ?
Come colleghi il parsing del sito, con l'inserimento di un annuncio? Perchè vorresti farlo?
Normalmente si interagisce con un sito tramite HTTP GET e POST



Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:riempire spinner con dati parsati
« Risposta #12 il: 08 Gennaio 2013, 16:36:19 CET »
0
Salve Qlimax dovrei fare un progetto per un'esame universitario (no purtroppo il sito non è mio).
Il parsing lo vorrei fare per prendermi in automatico tutte quelle voci che sono presenti all'interno dei vari spinner
Ma potrei anche evitare di fare il parsing e riempirlo staticamente lo spinner?

Come colleghi il parsing del sito, con l'inserimento di un annuncio?
Non ho idea di come si faccia