Autore Topic: AlertDialog e Jsoup  (Letto 799 volte)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
AlertDialog e Jsoup
« il: 11 Settembre 2014, 02:12:06 CEST »
0
Ciao amici volevo chiedervi se era possibile visualizzare in un alertdialog una stringa parsata tramite la libreria jsoup; se si esiste qualche tutoria a riguardo? Grazie in anticipo per la risposta

Post unito: 12 Settembre 2014, 01:54:37 CEST
Qualcuno mi potrebbe consigliare qualche tutoria a riguardo? grazie
« Ultima modifica: 12 Settembre 2014, 01:54:37 CEST da moskino11, Reason: Merged DoublePost »

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:AlertDialog e Jsoup
« Risposta #1 il: 28 Settembre 2014, 13:25:11 CEST »
0
Ciao amici volevo chiedervi se era possibile visualizzare in un alertdialog una stringa parsata tramite la libreria jsoup; se si esiste qualche tutoria a riguardo? Grazie in anticipo per la risposta

Post unito: 12 Settembre 2014, 01:54:37 CEST
Qualcuno mi potrebbe consigliare qualche tutoria a riguardo? grazie

Non ho capito. Ti serve una guida per creare un AlertDialog con una semplice stringa?

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:AlertDialog e Jsoup
« Risposta #2 il: 08 Maggio 2015, 15:25:17 CEST »
0
Praticamente ho un arrayList di stringhe che voglio passare all'allerta dialog.
in pratica ho una listview e se premo un determinato elemento, mi deve comparire un alertDialog con un messaggio (ovvero una delle mie stringhe parsate) in base all'id dell'elemento cliccato

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:AlertDialog e Jsoup
« Risposta #3 il: 08 Maggio 2015, 16:22:29 CEST »
+1
Non capisco che problemi hai. Se usi l'esempio che c'è sulla guida non funziona?


Codice (Java): [Seleziona]
// Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage(R.string.dialog_fire_missiles)
           .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // FIRE ZE MISSILES!
               }
           })
           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // User cancelled the dialog
               }
           });
    // Create the AlertDialog object and return it
    return builder.create();


E al posto di "R.string.dialog_fire_missiles" passi la tua stringa. O?

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:AlertDialog e Jsoup
« Risposta #4 il: 08 Maggio 2015, 16:36:45 CEST »
0
 ???

Io ho questo codice qui leggi i commenti per piacere così ti faccio capire il mio problema

Codice: [Seleziona]
  /*
        date1 è la mia listview popolata da stringhe passate dal sito. Ora invoco questo metodo per generare un'azione al click di ogni singola stringa e dopodiché mi deve visualizzare un alert dialog con un contenuto specifico in base all'id */
        date1.setOnItemClickListener(new OnItemClickListener()
        {
               
        public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
        {

// qui faccio io parsing
                Document doc = null;
                        try {
                                doc = Jsoup.parse(new java.net.URL(url).openStream(), "ISO-8859-1", url);
                        } catch (MalformedURLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                ArrayList<String> messaggi = new ArrayList<String>();

            Elements tbody = doc.getElementsByClass("sTestoDettaglio");
               String[] names=tbody.text().split("Farmacia");
                 
               // ogni mese quando si aggiorna il sito, cambiare l'indice del ciclo for
               for(int i = 1; i <= 7; i++)
               {
                  String farmacia = "Farmacia " + names[i];
                  messaggi.add(farmacia);
                 
               }
               
                // ora in messaggi ho tutte le mie stringhe che mi interessano
// il mio problema è come visualizzare con il metodo setMessage e come differenziarle in base all'id
       
        AlertDialog.Builder adb = new AlertDialog.Builder(
        Seconda.this);
       
        adb.setTitle("" + date1.getItemAtPosition(position));
        // se premo l'elemento 0 della lista mi deve visualizzare la farmacia 0
       
       
        adb.setMessage(?????????????????????????);
        adb.setPositiveButton("Ok", null);
        adb.show();                     
           
       
        }
        });

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:AlertDialog e Jsoup
« Risposta #5 il: 08 Maggio 2015, 16:43:02 CEST »
+1
Ok.
Peró non mi é chiaro...premendo sulla lista spiegami a voce (scritto) ció che dovrebbe succedere.

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:AlertDialog e Jsoup
« Risposta #6 il: 08 Maggio 2015, 16:47:15 CEST »
0
Allora ho una lista passata da internet

filippo
carlo
gianluca
.....

clicco su filippo per esempio e voglio che mi compaia il suo cognome (per esempio) in un alert dialog, poi premo ok e si chiude
Quindi in questo mio secondo parsing ho una lista con tutti i cognomi in ordine .
Quindi se premo carlo dalla lista, mi deve richiamare l'aleràdialog e mostrarmi il cognome esatto che nel mio caso corrisponderebbe alla mia seconda lista parsata (ovvero al secondo elemento di tale arrayList)

spero di essere stato chiaro :-)

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:AlertDialog e Jsoup
« Risposta #7 il: 08 Maggio 2015, 17:04:28 CEST »
+1
Allora, se la lista della tua ListView ha lo stesso ordine della lista dei cognomi, puoi usare l'id che ti viene passato dal metodo "public void onItemClick(AdapterView<?> arg0, View v, int position, long id)" e lo applichi alla tua array:

Codice (Java): [Seleziona]
adb.setMessage(messaggi.get(id));    

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:AlertDialog e Jsoup
« Risposta #8 il: 08 Maggio 2015, 17:16:18 CEST »
0
Grande funziona !!!!!

Grazie mille !!!

Post unito: 09 Maggio 2015, 10:23:32 CEST
Ciao emaborsa... questa operazione dell'allerta dialog funziona sull'emulatore del mio computer ma sullo smartphone no.
si interrompe nel momento in cui dovrebbe caricarmi l'alerà con la stringe parsata
Quindi mi sa che questa cosa la devo implementare con l'async Task ma non ho idea di come fare . Puoi gentilmente farmi capire come si usano i vari metodi di questa classe? perfavore
« Ultima modifica: 09 Maggio 2015, 10:23:33 CEST da moskino11, Reason: Merged DoublePost »

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:AlertDialog e Jsoup
« Risposta #9 il: 10 Maggio 2015, 15:55:39 CEST »
0
emaborsa ho provato a creare una classe che estende l'asyncTask in questo modo:

Codice (Java): [Seleziona]
//QUI CREO IL MIO ASYNCTASK RELATIVO AL THREAD CHE GESTISCE L'ALERT DIALOG
        private class Farmacia extends AsyncTask<Void, Void, String>
    {
        // lista delle farmacie di turno
                ArrayList<String> farmacie;

        Document doc;
        protected void onPreExecute()
        {
                super.onPreExecute();
               
                //prima di eseguire il parsing inizializzo l' arraylist
            farmacie = new ArrayList<String>();

                adb = new AlertDialog.Builder(Seconda.this);
                adb.setTitle("Farmacia di turno");
                adb.setMessage("Sto caricando...");
                adb.setPositiveButton("OK", null);
                adb.show();
        }
       
                @Override
                protected String doInBackground(Void... arg0) {
                        // TODO Auto-generated method stub
                       
                        try {
                                doc = Jsoup.parse(new java.net.URL(url).openStream(), "ISO-8859-1", url);
                                Elements tbody = doc.getElementsByClass("sTestoDettaglio");
                       String[] names=tbody.text().split("Farmacia");
                         
                       // ogni mese quando si aggiorna il sito, cambiare l'indice del ciclo for
                       for(int i = 1; i <= 7; i++)
                       {
                         
                          String testo = "Farmacia " + names[i];
                          int posizione = testo.indexOf(".");
                         
                          testo = testo.substring(0, posizione + 1);
                          farmacie.add(testo);          // in farmacie ho tutti i nomi delle farmacie di turno
                       }
                        } catch (MalformedURLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                       
                                        return null;
                }
               
                protected void onPostExecute(String result)
                {
                       
                     
                }      
    }  


Però non so cosa dover scrivere nel metodo onPostExecute e non come gestire l'esecuzione di questo asyncTask nel metodo

Codice (Java): [Seleziona]
setOnItemClickListener(new OnItemClickListener()
        {
               
        public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
        {
relativo al click dell'elemento della listview che poi va a richiamare l'alertDialog.
Mi aiuteresti per favore?

Post unito: 10 Maggio 2015, 16:46:52 CEST
Problema risolto...comunque chi fosse interessato allo stesso problema vi illustro il procedimento:

Codice (Java): [Seleziona]
        private class Farmacia extends AsyncTask<Void, Void, String>
    {
        // lista delle stringhe da salvare
                ArrayList<String> stringhe;

       
        protected void onPreExecute()
        {
                super.onPreExecute();
               
                //prima di eseguire il parsing inizializzo l' arraylist
            stringhe = new ArrayList<String>();

       
        }
       
                @Override
                protected String doInBackground(Void... arg0) {
                        // TODO Auto-generated method stub
                       
                        //qui vado ad effettuare il mio parsing in un thread secondario
                                        return null;
                }
               
                protected void onPostExecute(String result)
                {
                        // qui richiamo il metodo che mi permette di visualizzare l'alertDialog quando viene premuto l'elemento della lista
                         date1.setOnItemClickListener(new OnItemClickListener()
                        {
                               
                        public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
                        {
                                adb = new AlertDialog.Builder(Activity.this);
                                adb.setTitle("bla bla bla");
                                adb.setMessage(stringhe.get(position));
                                adb.setPositiveButton("Ok", null);
                            adb.show();
                        }
                        });                            
                       
                       
                     
                }      
    }  
       
       
« Ultima modifica: 10 Maggio 2015, 16:46:52 CEST da moskino11, Reason: Merged DoublePost »

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:AlertDialog e Jsoup
« Risposta #10 il: 12 Maggio 2015, 09:57:24 CEST »
0
Giusto per informazione: Un asynctask è stato studiato per effettuare operazioni in background, spesso per non bloccare la UI (il che è diventato d'obbligo). Troviamo tre metodi:

- PreExecute: Per inizialaizzare eventuali variabili
- doInBackground: tutto ciò che si trova in questo metodo viene eseguito in un altro task. Qui NON è possibile accedere ai componenti della UI!!!
- PostExecute: da la possibilità di applicare i risultati del doInBackground alla UI.