Autore Topic: Lista interattiva  (Letto 2029 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Lista interattiva
« il: 24 Febbraio 2012, 22:07:14 CET »
0
Salve ragazzi, vi espongo il mio problema...
devo creare una lista di elementi, nel quale, per ogni "ufficio" inserisco il nome del responsabile, il numero di telefono e l'email (fin qui nessun problema) solo che ora dovrei settare che quando si clicca sul singolo elemento della lista, mi chiede se chiamare, o se inviare un e mail (e quindi fa l'azione)

posto il codice relativo alla lista (.class non i due xml relativi alla grafica poichè uno contiene solo la listview e l'altro solo i 3 text per visualizzare nome numero e email)
spero mi possiate aiutare

Codice (Java): [Seleziona]
public class ContattiInge2 extends Activity {
           
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.layoutcontatti);
               
                /*  gestisco la chiamata al preside */
                      Button button_PresiInge = (Button) findViewById(R.id.button_PresiInge); /*dove button_inge è l'id che ho dato al bottone */
                                 
                     button_PresiInge.setOnClickListener(new OnClickListener() {                        
                                                public void onClick(View v) {
                                                        String toDial = "tel:09355****";
                                                        startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(toDial)));
                                                       
                                                }
                                        });
               
               
                ArrayList<VettoreContattiInge> personList=new ArrayList <VettoreContattiInge> (); //lista delle persone che la listview visualizzerà
               
               
                VettoreContattiInge [] people={
                                new VettoreContattiInge("Segreteria del preside" , "Dott. Gaspare ****" , "Fax: 0935 53****","E-mail: gaspare.****@uni****.it"),
                                new VettoreContattiInge("Rettore" , "Sign.ra ****" , "Fax: 0935 53****","E-mail: ****@uni****.it"),
                                new VettoreContattiInge("Direttore generale" , "Proff. ****" , "Fax: 0935 **** (referente Sign.ra T****","E-mail: ****@unikore.it"),
                                new VettoreContattiInge("Ombdusman" , "Proff. Ing. ****" , "Fax: 0935**** (referente Sign.ra ****","E-mail: ****@unikore.it")                          
                                };
               
                //riempimento della lista delle persone
               
                for(int i=0;i<people.length;i++){
                        personList.add(people[i]);
                }
               
               
               
                //Questa è la lista che rappresenta la sorgente dei dati della listview
                //ogni elemento è una mappa(chiave->valore)
                ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
               
               
                for(int i=0;i<personList.size();i++){
                        VettoreContattiInge p=personList.get(i);// per ogni persona all'inteno della lista
                       
                        HashMap<String,Object> personMap=new HashMap<String, Object>();//creiamo una mappa di valori
                       
                        personMap.put("Ruolo", p.getRuolo()); // ruolo
                        personMap.put("name", p.getName()); // nome
                        personMap.put("numero", p.getNumber());// numero
                        personMap.put("mail" ,p.getEmail()); //mail
                        data.add(personMap);  //aggiungiamo la mappa di valori alla sorgente dati
                }
               
               
                String[] from={"Ruolo","name","numero","mail"}; //dai valori contenuti in queste chiavi
                int[] to={R.id.personRuolo,R.id.personNome,R.id.personNumero, R.id.personEmail};//agli id delle view
               
                //costruzione dell adapter
                SimpleAdapter adapter=new SimpleAdapter(
                                getApplicationContext(),
                                data,//sorgente dati
                                R.layout.layoutrigalista, //layout contenente gli id di "to"
                                from,
                                to);
               
                //utilizzo dell'adapter
                ((ListView)findViewById(R.id.personListView)).setAdapter(adapter);
            }
           
               
        }

ho lasciato i  commenti, così forse il codice è più comprensibile... all'inizio del codice, c'è il tasto per chiamare il preside... mi servirebbe poter estendere la funzione a tutti gli elementi della lista...
Spero possiate aiutarmi ^^

Zate

  • Visitatore
Re:Lista interattiva
« Risposta #1 il: 24 Febbraio 2012, 22:17:13 CET »
0
Non sono sicuro di aver capito bene cosa vuoi fare. Qualcosa come questo?   Android: Context menu example (on long press, gridview) | Stealthcopter.com
Codice (Java): [Seleziona]
final CharSequence[] items1 = { "Opzione 0", "Opzione 1" };
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setTitle("Scegli un'opzione");
builder1.setItems(items1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
        if (item == 0) {
                                                //Fai qualcosa se opzione 0
                                        } else if (item == 1) {
                                                //fai qualocsa se opzione 1
                                        }
                                }
                        });
                        builder1.show();

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Lista interattiva
« Risposta #2 il: 24 Febbraio 2012, 22:34:15 CET »
0
uhm in questo modo penso che al click mi apre la schermata dove io dovrei creare l'azione per chiamare o inviare la mail.. ma come faccio per farlo cliccabile dalla lista?



scusate la censura
vedi l'elemento in giallo, è cosi perchè ho cliccato, ma al momento nn fa niente

Zate

  • Visitatore
Re:Lista interattiva
« Risposta #3 il: 24 Febbraio 2012, 22:40:16 CET »
0
Inserisci quelle righe di codice nell'OnItemClickListener.
Codice (Java): [Seleziona]
lv.setOnItemClickListener(new OnItemClickListener(){

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position,
                                        long id) {
                                // TODO Auto-generated method stub
                               
                        }
                       
                });

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Lista interattiva
« Risposta #4 il: 24 Febbraio 2012, 22:53:51 CET »
0
il problema è che l'unico tasto che ho inserito nel codice sopra, è per la chiamata al preside (che nn è in lista), mentre a me servirebbe settare l'azione per ogni singolo "click" sul singolo elemento della tabella (ad esempio quello evidenziato in arancione.. quindi tecnicamente dovrei metterlo all'interno del for per ripeterlo nella costruzione della lista per ogni elemento...

Zate

  • Visitatore
Re:Lista interattiva
« Risposta #5 il: 24 Febbraio 2012, 23:02:46 CET »
0
Appunto ;)
Codice (Java): [Seleziona]
lv.setOnItemClickListener(new OnItemClickListener(){

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position,
                                        long id) {
                                // TODO Auto-generated method stub
                               switch(position){
                               case 0:
                                   //fai qualcosa quando viene selezionato il primo item
                               break;
                               case 1:
                                  //fai qualcosa quando viene selezionato il secondo item
                               break;
                                 //eccetera
                        }
                       
                });
Non so se magari ti è più comodo usare l'id.
P.S. sostituisci                                   
Codice (Java): [Seleziona]
new AlertDialog.Builder(this);con
Codice (Java): [Seleziona]
new AlertDialog.Builder(getBaseContext());

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Lista interattiva
« Risposta #6 il: 24 Febbraio 2012, 23:07:34 CET »
0
 ??? ??? ??? ??? sembrerò un idiota ma mi sono perso... potresti publicare tutto il mio codice (prendendolo dal primo post) e quindi aggiunger le tue modifiche? grazie..
inoltre, per quanto riguarda il metodo per chiamare, come faccio riferimento al numero, dentro la classe dell'utente ho già creato il metodo getNumero, ma come lo richiamo in base al numero? dovrebbe esser  int a = peope.getNumero();

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Lista interattiva
« Risposta #7 il: 24 Febbraio 2012, 23:32:27 CET »
0
vediamo un pò, forse dovrei inserire la costruzione di quel "allert" per ogni case? però in questo modo perdo la dinamicità dello switch (va beh che tanto so la quantità di elementi che devo inserire)... ma mettendolo in questo modo, mi genera un errore relativo alla finale });

Zate

  • Visitatore
Re:Lista interattiva
« Risposta #8 il: 24 Febbraio 2012, 23:40:41 CET »
0
Innanzitutto guarda come utilizzare una listview in un'activity: java - How can I implement a ListView without ListActivity? (use only Activity) - Stack Overflow
lv è la tua listview.
Nel tuo onCreate aggiungi:
Codice (Java): [Seleziona]
lv.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                                // TODO Auto-generated method stub
                                switch (position) {
                                case 0:

                                        final CharSequence[] items1 = { "Chiama", "Invia mail" };
                                        AlertDialog.Builder builder1 = new AlertDialog.Builder(getBaseContext());
                                        builder1.setTitle("Scegli un'opzione");
                                        builder1.setItems(items1,
                                                        new DialogInterface.OnClickListener() {
                                                                public void onClick(DialogInterface dialog,
                                                                                int item) {
                                                                        if (item == 0) {
                                                                                String number = getNumero();
                                                                                // chiami
                                                                        } else if (item == 1) {
                                                                                String address = getAddress();
                                                                                // invii mail
                                                                        }
                                                                }
                                                        });
                                        builder1.show();

                                        break;
                                case 1:

                                        final CharSequence[] items2 = { "Chiama", "Invia mail" };
                                        AlertDialog.Builder builder2 = new AlertDialog.Builder(getBaseContext());
                                        builder2.setTitle("Scegli un'opzione");
                                        builder2.setItems(items2,
                                                        new DialogInterface.OnClickListener() {
                                                                public void onClick(DialogInterface dialog,
                                                                                int item) {
                                                                        if (item == 0) {
                                                                                String number = getNumero();
                                                                                // chiami
                                                                        } else if (item == 1) {
                                                                                String address = getAddress();
                                                                                // invii mail
                                                                        }
                                                                }
                                                        });
                                        builder2.show();

                                        break;
                                }
                        }
                });

Probabilmente esistono modi migliori per fare questa cosa. In questa listview ci sono centinaia di numeri o un numero ridotto (10-20)?
« Ultima modifica: 24 Febbraio 2012, 23:49:41 CET da Zate »

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Lista interattiva
« Risposta #9 il: 24 Febbraio 2012, 23:55:46 CET »
0
ancora niente.. nn riesco a farmelo quadrare.. se lo metto nel metodo oncreate mi  inizia a generare un bel pò di errori dovuti alle graffe..
inoltre io non ho generato un vero e proprio oggetto listview, perchè ho atto un parsing..

Codice (Java): [Seleziona]
 SimpleAdapter adapter=new SimpleAdapter(
                                getApplicationContext(),
                                data,//sorgente dati
                                R.layout.layoutrigalista, //layout contenente gli id di "to"
                                from,
                                to);
               
                //utilizzo dell'adapter
                ((ListView)findViewById(R.id.personListView)).setAdapter(adapter);
...

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Lista interattiva
« Risposta #10 il: 25 Febbraio 2012, 00:42:19 CET »
0
uhm nn funziona nemmeno con ((ListView)findViewById(R.id.personListView))
uhm boh.. sn senza speranze.. speriamo che domani mattina ilcdice sembri più leggibile...

Zate

  • Visitatore
Re:Lista interattiva
« Risposta #11 il: 25 Febbraio 2012, 09:29:59 CET »
0
Tutte le tue informazioni sono in un array in un xml? Se sì allora:
Codice (Java): [Seleziona]
ListView lv;
lv = (ListView)findViewById(R.id.personListView);
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , yourArray));

lv.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                                // TODO Auto-generated method stub
                                switch (position) {
                                case 0:

                                        final CharSequence[] items1 = { "Chiama", "Invia mail" };
                                        AlertDialog.Builder builder1 = new AlertDialog.Builder(getBaseContext());
                                        builder1.setTitle("Scegli un'opzione");
                                        builder1.setItems(items1,
                                                        new DialogInterface.OnClickListener() {
                                                                public void onClick(DialogInterface dialog,
                                                                                int item) {
                                                                        if (item == 0) {
                                                                                String number = getNumero();
                                                                                // chiami
                                                                        } else if (item == 1) {
                                                                                String address = getAddress();
                                                                                // invii mail
                                                                        }
                                                                }
                                                        });
                                        builder1.show();

                                        break;
                                case 1:

                                        final CharSequence[] items2 = { "Chiama", "Invia mail" };
                                        AlertDialog.Builder builder2 = new AlertDialog.Builder(getBaseContext());
                                        builder2.setTitle("Scegli un'opzione");
                                        builder2.setItems(items2,
                                                        new DialogInterface.OnClickListener() {
                                                                public void onClick(DialogInterface dialog,
                                                                                int item) {
                                                                        if (item == 0) {
                                                                                String number = getNumero();
                                                                                // chiami
                                                                        } else if (item == 1) {
                                                                                String address = getAddress();
                                                                                // invii mail
                                                                        }
                                                                }
                                                        });
                                        builder2.show();

                                        break;
                                }
                        }
                });

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Lista interattiva
« Risposta #12 il: 25 Febbraio 2012, 12:59:06 CET »
0
ancora niente... ti posto qui gli errori così magari riesci ad aiutarmi


Codice (Java): [Seleziona]
 ListView lv;
                lv = (ListView)findViewById(R.id.personListView);
                lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , personList)); /*the constructor ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , personList) is undefined (dove personList è il mio vettore) */
               
                lv.setOnItemClickListener(new OnItemClickListener() {


                        @Override /* l'Override non me lo scrive grigio, ma chiocciola grigia, e override nero */
                                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { /* The method onItemClick(AdapterView<?>, View, int, long) of type new AdapterView.OnItemClickListener(){} must override a superclass method, naturalmente, dato che non considera l'override.. */
 
                                                switch (position) {
                                                case 0:


                                                        final CharSequence[] items1 = { "Chiama", "Invia mail" };
                                                        AlertDialog.Builder builder1 = new AlertDialog.Builder(getBaseContext());
                                                        builder1.setTitle("Scegli un'opzione");
                                                        builder1.setItems(items1,
                                                                        new DialogInterface.OnClickListener() {
                                                                                public void onClick(DialogInterface dialog,
                                                                                                int item) {
                                                                                        if (item == 0) {
                                                                                                String number = getNumber(); /* qui e per gli altri metodi da errore "The method getNumber() is undefined for the type new DialogInterface.OnClickListener(){}" e in effetti non capisco come richiami il metodo getNumero relativo solo a quell'elemento del vettore */
                                                                                                // chiami
                                                                                        } else if (item == 1) {
                                                                                                String address = getEmail();
                                                                                                // invii mail
                                                                                        }
                                                                                }
                                                                        });
                                                        builder1.show();


                                                        break;
                                                case 1:


                                                        final CharSequence[] items2 = { "Chiama", "Invia mail" };
                                                        AlertDialog.Builder builder2 = new AlertDialog.Builder(getBaseContext());
                                                        builder2.setTitle("Scegli un'opzione");
                                                        builder2.setItems(items2,
                                                                        new DialogInterface.OnClickListener() {
                                                                                public void onClick(DialogInterface dialog,
                                                                                                int item) {
                                                                                        if (item == 0) {
                                                                                                String number = getNumber();
                                                                                                // chiami
                                                                                        } else if (item == 1) {
                                                                                                String address = getEmail();
                                                                                                // invii mail
                                                                                        }
                                                                                }
                                                                        });
                                                        builder2.show();


                                                        break;
                                                }
                                        }
                                }); /* e qui mi da errore "Syntax error, insert "}" to complete MethodBody" ma nn posso chiudere la graffa perchè sotto c'è altro codice */


ripublico tutto, tutto il codice della  classe, che magari ho fatto qualche nabbata tipo dimenticare un import, o metterlo nel posto sbagliato...





Codice (Java): [Seleziona]
import java.util.ArrayList;
import java.util.HashMap;


import android.app.Activity;
import android.app.AlertDialog;
import android.net.Uri;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.Button; //bottone
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.view.View.OnClickListener; //listener bottone
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; // Intenzioni
import android.view.View; //grafica
import android.view.Menu; //menu
import android.view.MenuItem; //icone menu
import android.widget.Toast; //toast
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;


public class ContattiInge2 extends Activity {
           
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.layoutcontatti);
               
               




               
               
                /*  gestisco la chiamata al preside */
                      Button button_PresiInge = (Button) findViewById(R.id.button_PresiInge); /*dove button_inge è l'id che ho dato al bottone
                                 
                     button_PresiInge.setOnClickListener(new OnClickListener() {                        
                                                public void onClick(View v) {
                                                        String toDial = "tel:093*";
                                                        startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(toDial)));
                                                       
                                                }
                                        });  */

                     
               
                     ArrayList<VettoreContattiInge> personList=new ArrayList <VettoreContattiInge> (); //lista delle persone che la listview visualizzerà
               
               
                VettoreContattiInge [] people={
                                new VettoreContattiInge("Segreteria del preside" , "Dott. Gas*" , "Fax: 0935*","E-mail: gaspar*.it"),
                                new VettoreContattiInge("Segreteria didattica della facoltà" , "Sign.ra M*" , "Fax: 0935 5*","E-mail: mto*.it"),
                                new VettoreContattiInge("Responsabile architettura" , "Proff. *" , "Fax: 0935* (referente Sign.ra *","E-mail: *@unikore.it")};
               
                //riempimento della lista delle persone
               
                for(int i=0;i<people.length;i++){
                        personList.add(people[i]);
                       
                        }
               
               
               
                //Questa è la lista che rappresenta la sorgente dei dati della listview
                //ogni elemento è una mappa(chiave->valore)
                ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
               
               
                for(int i=0;i<personList.size();i++){
                        VettoreContattiInge p=personList.get(i);// per ogni persona all'inteno della lista
                       
                        HashMap<String,Object> personMap=new HashMap<String, Object>();//creiamo una mappa di valori
                       
                        personMap.put("Ruolo", p.getRuolo()); // ruolo
                        personMap.put("name", p.getName()); // nome
                        personMap.put("numero", p.getNumber());// numero
                        personMap.put("mail" ,p.getEmail()); //mail
                        data.add(personMap);  //aggiungiamo la mappa di valori alla sorgente dati
                       
                           
                }
               
               
                String[] from={"Ruolo","name","numero","mail"}; //dai valori contenuti in queste chiavi
                int[] to={R.id.personRuolo,R.id.personNome,R.id.personNumero, R.id.personEmail};//agli id delle view
               
                //costruzione dell adapter
                SimpleAdapter adapter=new SimpleAdapter(
                                getApplicationContext(),
                                data,//sorgente dati
                                R.layout.layoutrigalista, //layout contenente gli id di "to"
                                from,
                                to);
               
                //utilizzo dell'adapter
                ((ListView)findViewById(R.id.personListView)).setAdapter(adapter);
           
                /*Gestione azioni tabella */
                ListView lv;
                lv = (ListView)findViewById(R.id.personListView);
                lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , personList));
                lv.setOnItemClickListener(new OnItemClickListener() {


                        @Override
                                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


                                                switch (position) {
                                                case 0:


                                                        final CharSequence[] items1 = { "Chiama", "Invia mail" };
                                                        AlertDialog.Builder builder1 = new AlertDialog.Builder(getBaseContext());
                                                        builder1.setTitle("Scegli un'opzione");
                                                        builder1.setItems(items1,
                                                                        new DialogInterface.OnClickListener() {
                                                                                public void onClick(DialogInterface dialog,int item) {
                                                                                        if (item == 0) {
                                                                                                String number = getNumber();
                                                                                                // chiami
                                                                                        } else if (item == 1) {
                                                                                                String address = getEmail();
                                                                                                // invii mail
                                                                                        }
                                                                                }
                                                                        });
                                                        builder1.show();


                                                        break;
                                                case 1:


                                                        final CharSequence[] items2 = { "Chiama", "Invia mail" };
                                                        AlertDialog.Builder builder2 = new AlertDialog.Builder(getBaseContext());
                                                        builder2.setTitle("Scegli un'opzione");
                                                        builder2.setItems(items2,
                                                                        new DialogInterface.OnClickListener() {
                                                                                public void onClick(DialogInterface dialog,
                                                                                                int item) {
                                                                                        if (item == 0) {
                                                                                                String number = getNumber();
                                                                                                // chiami
                                                                                        } else if (item == 1) {
                                                                                                String address = getEmail();
                                                                                                // invii mail
                                                                                        }
                                                                                }
                                                                        });
                                                        builder2.show();


                                                        break;
                                                }
                                        }
                                });
                /* gestione menu a scomparsa */
               
                public boolean onCreateOptionsMenu(Menu menu) {
                  MenuItem voce1 = menu.add(Menu.NONE, 1, 1, "Facoltà");
                  voce1.setIcon(R.drawable.facolta);
                  MenuItem voce2 = menu.add(Menu.NONE, 2, 2, "News");
                  voce2.setIcon(R.drawable.news);
                  MenuItem voce3 = menu.add(Menu.NONE, 3, 3, "Esami");
                  voce3.setIcon(R.drawable.esami);
                 MenuItem voce4 = menu.add(Menu.NONE, 4, 4, "Contatti");
                  voce4.setIcon(R.drawable.contatti);
                  return true;
                }
               
                /* listener menu */
                public boolean onOptionsItemSelected(MenuItem item) {
                          int id = item.getItemId();    
                          switch (id) {
                            case 1:/** facoltà qui non fa niente */
                                Intent facolta = new Intent (getBaseContext(), Koreapp1Activity.class);
                           startActivity(facolta);
                           break;
                             
                           
                            case 2: /** News */
                                Intent News = new Intent (getBaseContext(), News.class);
                           startActivity(News);
                           break;
                             
                             
                            case 3: /** Esami */
                                Intent esami = new Intent (getBaseContext(), esami.class);
                                startActivity(esami);
                                break;
                               
                            case 4: /** Contatti */
                                Intent contatti = new Intent (getBaseContext(), contatti.class);
                                startActivity(contatti);
                                break;
                          }
                          return true;
                        }
                 


        }


servono i file xml e la classe con la quale riempio il vettore?
« Ultima modifica: 25 Febbraio 2012, 13:19:51 CET da gabric »

Zate

  • Visitatore
Re:Lista interattiva
« Risposta #13 il: 25 Febbraio 2012, 13:26:05 CET »
0
Sostituisci
Codice (Java): [Seleziona]
((ListView)findViewById(R.id.personListView)).setAdapter(adapter);
ListView lv;
lv = (ListView)findViewById(R.id.personListView);
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , personList));
con
Codice (Java): [Seleziona]
ListView lv;
lv = (ListView)findViewById(R.id.personListView);
lv.setAdapter(adapter);

Non ho problemi con le parentesi io... Prova a vedere se compare il dialog, cancella getNumber e getMail che non esistono, li devi creare tu e in essi prendi il numero e la mail.

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Lista interattiva
« Risposta #14 il: 25 Febbraio 2012, 13:36:31 CET »
0
getMial e getNumeber posso inserirli manualmente dato che dipende dall'elemento del vettore...
Grazie ancora!

comunque ancora gli stessi errori...
Codice (Java): [Seleziona]
package unikore.it;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.app.AlertDialog;
import android.net.Uri;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.Button; //bottone
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.view.View.OnClickListener; //listener bottone
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; // Intenzioni
import android.view.View; //grafica
import android.view.Menu; //menu
import android.view.MenuItem; //icone menu
import android.widget.Toast; //toast
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.app.ListActivity;
import android.widget.TextView;

public class ContattiInge2 extends Activity {
           
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.layoutcontatti);
               
               


               
               
                /*  gestisco la chiamata al preside */
                      Button button_PresiInge = (Button) findViewById(R.id.button_PresiInge); /*dove button_inge è l'id che ho dato al bottone
                                 
                     button_PresiInge.setOnClickListener(new OnClickListener() {                        
                                                public void onClick(View v) {
                                                        String toDial = "tel:0935536951";
                                                        startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(toDial)));
                                                       
                                                }
                                        });  */

                     
               
                     ArrayList<VettoreContattiInge> personList=new ArrayList <VettoreContattiInge> (); //lista delle persone che la listview visualizzerà
               
               
                VettoreContattiInge [] people={
                                new VettoreContattiInge("Segreteria del preside" , "Dott.***" , "Fax: 0***1","E-mail: g***@***.it"),
                               ***/*tutti gli altri elementi*/                      
                                };
               
                //riempimento casuale della lista delle persone
               
                for(int i=0;i<people.length;i++){
                        personList.add(people[i]);
                       
                        }
               
               
               
                //Questa è la lista che rappresenta la sorgente dei dati della listview
                //ogni elemento è una mappa(chiave->valore)
                ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
               
               
                for(int i=0;i<personList.size();i++){
                        VettoreContattiInge p=personList.get(i);// per ogni persona all'inteno della lista
                       
                        HashMap<String,Object> personMap=new HashMap<String, Object>();//creiamo una mappa di valori
                       
                        personMap.put("Ruolo", p.getRuolo()); // ruolo
                        personMap.put("name", p.getName()); // nome
                        personMap.put("numero", p.getNumber());// numero
                        personMap.put("mail" ,p.getEmail()); //mail
                        data.add(personMap);  //aggiungiamo la mappa di valori alla sorgente dati
                       
                           
                }
               
               
                String[] from={"Ruolo","name","numero","mail"}; //dai valori contenuti in queste chiavi
                int[] to={R.id.personRuolo,R.id.personNome,R.id.personNumero, R.id.personEmail};//agli id delle view
               
                //costruzione dell adapter
                SimpleAdapter adapter=new SimpleAdapter(
                                getApplicationContext(),
                                data,//sorgente dati
                                R.layout.layoutrigalista, //layout contenente gli id di "to"
                                from,
                                to);
               
               /*gestione azioni tabella */
                ListView lv;
                lv = (ListView)findViewById(R.id.personListView);
                lv.setAdapter(adapter);
               
                lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , personList));
                lv.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                                                switch (position) {
                                                case 0:

                                                        final CharSequence[] items1 = { "Chiama", "Invia mail" };
                                                        AlertDialog.Builder builder1 = new AlertDialog.Builder(getBaseContext());
                                                        builder1.setTitle("Scegli un'opzione");
                                                        builder1.setItems(items1,
                                                                        new DialogInterface.OnClickListener() {
                                                                                public void onClick(DialogInterface dialog,int item) {
                                                                                        if (item == 0) {
                                                                                                String number = getNumber();
                                                                                                // chiami
                                                                                        } else if (item == 1) {
                                                                                                String address = getEmail();
                                                                                                // invii mail
                                                                                        }
                                                                                }
                                                                        });
                                                        builder1.show();

                                                        break;
                                                case 1:

                                                        final CharSequence[] items2 = { "Chiama", "Invia mail" };
                                                        AlertDialog.Builder builder2 = new AlertDialog.Builder(getBaseContext());
                                                        builder2.setTitle("Scegli un'opzione");
                                                        builder2.setItems(items2,
                                                                        new DialogInterface.OnClickListener() {
                                                                                public void onClick(DialogInterface dialog,
                                                                                                int item) {
                                                                                        if (item == 0) {
                                                                                                String number = getNumber();
                                                                                                // chiami
                                                                                        } else if (item == 1) {
                                                                                                String address = getEmail();
                                                                                                // invii mail
                                                                                        }
                                                                                }
                                                                        });
                                                        builder2.show();

                                                        break;
                                                }
                                        }
                                });
                /* gestione menu a scomparsa */
               
                public boolean onCreateOptionsMenu(Menu menu) {
                  MenuItem voce1 = menu.add(Menu.NONE, 1, 1, "Facoltà");
                  voce1.setIcon(R.drawable.facolta);
                  MenuItem voce2 = menu.add(Menu.NONE, 2, 2, "News");
                  voce2.setIcon(R.drawable.news);
                  MenuItem voce3 = menu.add(Menu.NONE, 3, 3, "Esami");
                  voce3.setIcon(R.drawable.esami);
                 MenuItem voce4 = menu.add(Menu.NONE, 4, 4, "Contatti");
                  voce4.setIcon(R.drawable.contatti);
                  return true;
                }
               
                /* listener menu */
                public boolean onOptionsItemSelected(MenuItem item) {
                          int id = item.getItemId();    
                          switch (id) {
                            case 1:/** facoltà qui non fa niente */
                                Intent facolta = new Intent (getBaseContext(), Koreapp1Activity.class);
                           startActivity(facolta);
                           break;
                             
                           
                            case 2: /** News */
                                Intent News = new Intent (getBaseContext(), News.class);
                           startActivity(News);
                           break;
                             
                             
                            case 3: /** Esami */
                                Intent esami = new Intent (getBaseContext(), esami.class);
                                startActivity(esami);
                                break;
                               
                            case 4: /** Contatti */
                                Intent contatti = new Intent (getBaseContext(), contatti.class);
                                startActivity(contatti);
                                break;
                          }
                          return true;
                        }
                 

        }
« Ultima modifica: 14 Marzo 2012, 12:53:52 CET da gabric »