Autore Topic: gestione dati prelevati dal db  (Letto 855 volte)

Offline pino8314

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
gestione dati prelevati dal db
« il: 16 Febbraio 2011, 18:03:14 CET »
0
Salve,   
ho bisogno di un piccolo aiuto,

ho un db formato da due colonne

_id
numero_carta

faccio una select sul db e il risultato me lo faccio elaborare da un SimpleCursorAdapter

Codice (Java): [Seleziona]
String[] colonne = new String[]{"numero_carta"};
int[] risultati = new int[] {R.id.numberCarta};

SimpleCursorAdapter adapter=new SimpleCursorAdapter(
                this,
                R.layout.view_list_pagamenti,
                c,
                colonne,
                risultati);

dalla select estrapolo soltanto la colonna numerocarta e vorrei che di ogni riga estratta mi venga fatto un substring che prenda soltanto gli ultimi 4 caratteri del numero carta

è possibile fare questa cosa qui??
« Ultima modifica: 16 Febbraio 2011, 18:17:28 CET da Ricky`, Reason: usa il tag code! »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:gestione dati prelevati dal db
« Risposta #1 il: 16 Febbraio 2011, 18:22:50 CET »
+1
Prova con una cosa del genere
Codice (Java): [Seleziona]
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        String text = cursor.getString(0);
        ((TextView) view).setText(text.substring(text.length()-4));
        return true;
    }
});

Offline pino8314

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
Re:gestione dati prelevati dal db
« Risposta #2 il: 17 Febbraio 2011, 09:31:02 CET »
0
grazie cosi funziona. potresti spiegarmi cosa fa in realtà setViewBinder?cattura l'evento del mio adapter?

tra l'altro, stampando in logcat la sua elaborazione, noto che elabora più di una volta la stessa riga anche se in realta nel listview poi mi vengono stampate il numero corretto di righe

es.

Codice (Java): [Seleziona]
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
                @Override
            public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
                int nameCol=cursor.getColumnIndex(MyDatabase.TBPagamenti.NUMBER_KEY);
                String text = cursor.getString(nameCol);
               [b] Log.e("log", text); [/b]
                ((TextView) view).setText(text.substring(text.length()-4));
                return true;
            }
        });
in logcat ottengo

Codice: [Seleziona]
[b]01-06 19:23:33.785: ERROR/log(928): 0265587456985632
01-06 19:23:33.785: ERROR/log(928): 0265587456985632
01-06 19:23:33.785: ERROR/log(928): 6523854754126589
01-06 19:23:33.805: ERROR/log(928): 0265587456985632
01-06 19:23:33.805: ERROR/log(928): 6523854754126589[/b]
01-06 19:23:33.815: DEBUG/PhoneWindow(928): DebugMonitor class=it.sviluppo.qrpay.ViewPagamenti focus=true
01-06 19:23:33.815: INFO/XT9IME(521): [finishInput]
01-06 19:23:33.815: INFO/HTCIMEService(521): [setWCLText]: wclText=, candIdx=0
01-06 19:23:33.815: ERROR/HTCIMEService(521): [onFinishInput] mData.mCurrIM.finishInput(); Exception = java.lang.NullPointerException
01-06 19:23:33.815: INFO/HTCIMEService(521): [finishInput]:
[b]01-06 19:23:33.825: ERROR/log(928): 0265587456985632
01-06 19:23:33.825: ERROR/log(928): 0265587456985632
01-06 19:23:33.825: ERROR/log(928): 6523854754126589[/b]
« Ultima modifica: 17 Febbraio 2011, 09:53:37 CET da Ricky` »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:gestione dati prelevati dal db
« Risposta #3 il: 17 Febbraio 2011, 09:53:16 CET »
0
Devi utilizzare i tag code per favore.

Va ad alterare il comportamento di default dell'adapter quando va ad effettuare il binding dei dati.
Ti viene stampato più volte il log perchè scrollando la listview il sistema riutilizza le view della singole righe quindi ogni volta deve rifare il binding dei dati delle righe che devono essere visualizzate.

Offline pino8314

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
Re:gestione dati prelevati dal db
« Risposta #4 il: 17 Febbraio 2011, 10:57:13 CET »
0
scusami e grazie per la dritta

Offline pino8314

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
Re:gestione dati prelevati dal db
« Risposta #5 il: 17 Febbraio 2011, 17:09:31 CET »
0
scusami è nato un piccolo problema... ho l'esigenza di stampare più di un dato, nel layout R.layout.view_list_pagamenti adesso ho due textview.

Codice: [Seleziona]
String[] colonne = new String[]{"numero_carta", "tipo_carta"};
int[] risultati = new int[] {R.id.numberCarta, R.id.tipoCarta};

SimpleCursorAdapter adapter=new SimpleCursorAdapter(
                this,
                R.layout.view_list_pagamenti,
                c,
                colonne,
                risultati);

il problema è che eseguendo lo script che mi hai consigliato, viene stampato lo stesso valore su entrambe le textview. Se tolgo lo script tutto funziona correttamente. Mi servirebbe qualcosa che mi permetta di controllare e gestire i singoli dati che vengono stampati nelle corrispettive textview.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re: gestione dati prelevati dal db
« Risposta #6 il: 17 Febbraio 2011, 17:20:22 CET »
0
Metti un if in modo tale che venga eseguito solo se la columnIndex è quella che ti interessa  :) dai un po di  intraprendenza ;)

Sent from my HTC Desire using Tapatalk