Autore Topic: Errore runtime: CustomAdapter e Listview  (Letto 411 volte)

Offline BruceAndDevIT

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg l5
  • Sistema operativo:
    windows seven
Errore runtime: CustomAdapter e Listview
« il: 03 Aprile 2014, 08:54:45 CEST »
0
salve,

sto studiando come funziona la listview ed i suoi adapter seguivo una guida online nel create all'apertura di una activity

ho messo questo codice:

GetFiles
torna l'elenco di tutti i file dentro la scheda sd

Codice: [Seleziona]
        setContentView(R.layout.activity_display_message);       
        ListView listView = (ListView)findViewById(R.id.listView1);
        ArrayList<String> array=GetFiles(Environment.getExternalStorageDirectory().getPath());
        ArrayAdapter<String> arrayAdapter =
                new ArrayAdapter<String>(this, R.layout.row_list_files, R.id.textViewList, array);
        listView.setAdapter(arrayAdapter);

avvio la mai activity e tutto funziona per bene


proseguo aumentando la complessità e inizio ad usare i customadapter

Creo una classe per poter sfruttare il mio esempio
Codice: [Seleziona]
        public class Contatto {

            private String nome;
            private String cognome;
            private String telefono;

            public Contatto(String nome, String cognome, String telefono) {
                this.nome = nome;
                this.cognome = cognome;
                this.telefono = telefono;
            }

            public String getNome() {
                return nome;
            }

            public void setNome(String nome) {
                this.nome = nome;
            }

            public String getCognome() {
                return cognome;
            }

            public void setCognome(String cognome) {
                this.cognome = cognome;
            }

            public String getTelefono() {
                return telefono;
            }

            public void setTelefono(String telefono) {
                this.telefono = telefono;
            }

        }       


creo il customadapter
Codice: [Seleziona]
public class CustomAdapter extends ArrayAdapter<Contatto>{

            public CustomAdapter(Context context, int textViewResourceId,
                    Contatto [] objects) {
                super(context, textViewResourceId, objects);
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                LayoutInflater inflater = (LayoutInflater) getContext()
                     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.row_list_files_custom, null);
                TextView nome = (TextView)convertView.findViewById(R.id.textViewName);
                TextView numero = (TextView)convertView.findViewById(R.id.textViewNumber);
                Contatto c = getItem(position);
                nome.setText(c.getNome()+" "+c.getCognome());
                numero.setText(c.getTelefono());
                return convertView;
            }

        }       

poi nel create della mia activity inserisco queste linee di codice, dopo aver commentato le linee precedenti
Codice: [Seleziona]
ListView listView = (ListView)findViewById(R.id.listView1);
        List list = new LinkedList();
        list.add(new Contatto("Antonio","Coschignano","1234567890"));
        list.add(new Contatto("Giovanni","Rossi","1234567890"));
        list.add(new Contatto("Giuseppe","Bianchi","1234567890"));
        list.add(new Contatto("Leonardo","Da Vinci","1234567890"));
        list.add(new Contatto("Mario","Rossi","1234567890"));
        list.add(new Contatto("Aldo","Rossi","1234567890"));
       
        CustomAdapter adapter = new
        CustomAdapter(this, R.layout.row_list_files_custom, (Contatto[]) list.toArray());
        [b]listView.setAdapter(adapter);[/b]

il codice in grassetto crashare l'app
nota:
rispetto all'esempio che seguivo ho dovuto cambiare questo

Codice: [Seleziona]
CustomAdapter(this, R.layout.row_list_files_custom, list);

in questo, perchè non compilava
Codice: [Seleziona]
CustomAdapter(this, R.layout.row_list_files_custom, (Contatto[]) list.toArray());


Tutti i layout sono creati ed il codice compila.

Potete darmi una mano a capire dove sta l'errore ?

grazie.
« Ultima modifica: 03 Aprile 2014, 08:57:52 CEST da BruceAndDevIT »