Autore Topic: ListView con dati provenienti da db  (Letto 357 volte)

Offline niko_2307

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
Re:ListView con dati provenienti da db
« Risposta #15 il: 01 Settembre 2010, 16:42:00 CEST »
0
ora, forse il parametro id passato nell onItemClick, corrisponde all'id nel database... ma non penso.

ho fatto delle prove e ho notato che l'id passato dal metodo corrisponde a quello del db.

Codice (Java): [Seleziona]
long _id=adapter.getItemId(position)
inoltre, puoi accedere ai dati visualizzati sull elemento della lista.

ad esempio

Codice (Java): [Seleziona]
getListView().setOnItemClickListener(new OnItemClickListener() {
                       
                        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                                TextView tv=(TextView)v.findViewById(R.id.evento);
                                String evtStr=tv.getText();


                });



io stavo cercando di recuperare delle informazioni nel db tramite l'id. ho provato con il cursor in questo modo
Codice (Java): [Seleziona]
getListView().setOnItemClickListener(new OnItemClickListener() {
                       
                        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
       
                                AlertDialog.Builder adb = new AlertDialog.Builder(S2.this);
                                adb.setTitle("Prova");
                                cursor = db.query(EventiMetaData.TABLE_NAME, new String[] {"_id", EventiMetaData.TITOLO}, "_id = 5", null, null, null, null);
                                int categoriaIndex = cursor.getColumnIndex(EventiMetaData.CATEGORIA);
                                adb.setMessage("oggetto: " + cursor.getString(categoriaIndex));
                                adb.setPositiveButton("Ok", null);
                                adb.show();
                        }
                });

ma il risultato è
Codice (Text): [Seleziona]
 09-01 16:40:24.733: ERROR/AndroidRuntime(19090): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 719
  • Respect: +169
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Nexus One - Wildfire - Magic
  • Market Developer Name:
    egsolutions
  • Sistema operativo:
    Ubuntu 10.10, Windows 7
Re:ListView con dati provenienti da db
« Risposta #16 il: 01 Settembre 2010, 16:57:17 CEST »
0

Codice (Java): [Seleziona]
...

cursor = db.query(EventiMetaData.TABLE_NAME, new String[] {"_id", EventiMetaData.TITOLO}, "_id = "+adapter.getItemId(position), null, null, null, null);

if(cursor.moveToFirst){

int categoriaIndex = cursor.getColumnIndex(EventiMetaData.CATEGORIA);

}

...
Why?

Offline niko_2307

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
Re:ListView con dati provenienti da db
« Risposta #17 il: 01 Settembre 2010, 17:44:06 CEST »
0
continua a sollevarmi un eccezione
Codice (Text): [Seleziona]
 09-01 17:37:13.411: ERROR/AndroidRuntime(7752): java.lang.IllegalStateException: get field slot from row 0 col -1 failed

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 719
  • Respect: +169
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Nexus One - Wildfire - Magic
  • Market Developer Name:
    egsolutions
  • Sistema operativo:
    Ubuntu 10.10, Windows 7
Re:ListView con dati provenienti da db
« Risposta #18 il: 01 Settembre 2010, 18:29:28 CEST »
0
scusa non mi ero accorto di una cosa...

Codice (Java): [Seleziona]
cursor = db.query(EventiMetaData.TABLE_NAME, new String[] {"_id", EventiMetaData.TITOLO}, "_id = "+adapter.getItemId(position), null, null, null, null);
chiaramente, se vuoi l'indice della colonna di EventiMetaData.CATEGORIA,  la colonna dev essere presente nella query.

ora il tuo cursor contiene solo _id e EventiMetaData.TITOLO

quando chiedi l'indice di EventiMetaData.CATEGORIA ti da -1, perchè non è nella query

aggiungi EventiMetaData.CATEGORIA alla query ;)

Why?

Offline niko_2307

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
Re:ListView con dati provenienti da db
« Risposta #19 il: 01 Settembre 2010, 19:07:50 CEST »
0
ohh finalmente ci siamo...grazie mille per il tuo aiuto...sei un grande  ;-)