Autore Topic: onListItemClick, android.database.sqlite.SQLiteCursor@ e valore  (Letto 675 volte)

Offline earp_

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« il: 20 Aprile 2011, 09:55:33 CEST »
0
Salve a tutti.

Ho la seguente situazione:

Codice (Java): [Seleziona]
public void onCreate(Bundle icicle) {
                super.onCreate(icicle);
                mDbHelper = new myDbAdapter(this);
                mDbHelper.open();
               
               
                Cursor c = mDbHelper.getList();
                startManagingCursor(c);

                String[] names = new String[] { myDbAdapter.KEY_REG };
                int[] to = new int[] { R.id.label };
       
        SimpleCursorAdapter myList = new SimpleCursorAdapter(this, R.layout.rowlayout, c, names, to);
                 
        setListAdapter(myList);
               
        //do intent
        }

La situazione riportata sopra e' (non ho accenti nella keyboard) chiara. Ho un array di stringhe names[] con dentro dei valori che provengono dal db. Per cui dentro a names[] ho Cane, Gatto, Topo.

Ora, se eseguo il seguente codice

Codice (Java): [Seleziona]
        protected void onListItemClick(ListView l, View v, int position, long id) {
                super.onListItemClick(l, v, position, id);
                // Get the item that was clicked
                Object o = this.getListAdapter().getItem(position);
                String keyword = o.toString();
System.out.println(keyword);

e stampo keyword, ho come risultato: android.database.sqlite.SQLiteCursor@... e non Cane (caso in cui cliccassi la prima riga)

Perfetto, o meglio fin qui stampo cio' che gli dico.

Per ora gestisco una sola tabella e vorrei continuare con una tabella al momento ( in seguito aggiungo una seconda tabella Animali con dentro id e nome animale ).

Vorrei poter stampare invece di "android.database.sqlite.SQLiteCursor@..." la stringa relativa alla riga cliccata, in questo esempio Cane contenuta nell'array names[]

Qualche consiglio?

Grazie

earp_

PS = ho letto questo post [facile] Visualizzare gli oggetti di una ListView in gruppi omogenei con titolo - Android Developers Italia
« Ultima modifica: 20 Aprile 2011, 09:57:11 CEST da earp_ »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« Risposta #1 il: 20 Aprile 2011, 10:13:01 CEST »
0
la toString() di Object stampa semplicemente informazioni sull'oggetto.
Dovresti fare 2 cose:
1. castare il tuo Object nell'oggetto reale, o comunque in una sua interfaccia.
2. crearti il metodo toString nella classe dell'oggetto reale, in cui stampi le informazioni che ti servono.

Se non implementi il toString, in qualsiasi oggetto che fai, stamperà sempre le info di quel tipo.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline earp_

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
Re:onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« Risposta #2 il: 20 Aprile 2011, 10:29:54 CEST »
0
Quindi una cosa di questo genere

i)
Codice (Java): [Seleziona]
Object o = this.getClass().getName();
ii)

Codice (Java): [Seleziona]
SimpleCursorAdapter adapter = new SimpleCursorAdapter(context, layout, cursor, from, to);
 CursorToStringConverter converter = new CursorToStringConverter() {

    @Override
    public CharSequence convertToString(Cursor cursor) {
       int desiredColumn = 1;
       return cursor.getString(desiredColumn);
    }
 };

 adapter.setCursorToStringConverter(converter);

Giusto?

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« Risposta #3 il: 20 Aprile 2011, 11:06:44 CEST »
0
1) no
2) no

intendevo dire: che oggetti contiene la tua lista?
che oggetti ti aspetti da
Codice (Java): [Seleziona]
this.getListAdapter().getItem(position);se ti aspetti String allora fai:
Codice (Java): [Seleziona]
String value = (String)this.getListAdapter().getItem(position);
se sono oggetti di tipo Pippo, allora
Codice (Java): [Seleziona]
Pippo value = (Pippo)this.getListAdapter().getItem(position);
in quest'ultimo caso, devi implementarti il metodo toString() all'interno della classe Pippo, cosicché tu possa fare:
Codice (Java): [Seleziona]
System.out.println(value);
ci penserà lui a richiamare il metodo toString() dell'oggetto.

un'ultima cosa: utilizza il logger, non il System.out.println.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline earp_

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
Re:onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« Risposta #4 il: 20 Aprile 2011, 11:18:32 CEST »
0
Chiarissimo.

Tks.

Offline sweeney1

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc
  • Sistema operativo:
    windows 7
Re:onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« Risposta #5 il: 13 Settembre 2011, 22:44:58 CEST »
0
anche io ho lo stesso problema...
volevo sapere se lo hai risolto...

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« Risposta #6 il: 16 Settembre 2011, 09:38:55 CEST »
0
cosa non ti è chiaro delle spiegazioni date, così magari vediamo di chiarirle?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline sweeney1

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc
  • Sistema operativo:
    windows 7
Re:onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« Risposta #7 il: 19 Settembre 2011, 15:34:37 CEST »
0
la spiegazione mi è chiara solo che nn mi funziona...come potrei implementarlo il metodo toString()???

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:onListItemClick, android.database.sqlite.SQLiteCursor@ e valore
« Risposta #8 il: 19 Settembre 2011, 15:37:07 CEST »
0
crei un metodo dentro la tua classe, lo chami toString() e fai in modo che restituisca una String con quello che vuoi tu.....
senza considerare il fatto che con eclipse puoi farti generare tu il toString() in automatico.....
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/