Autore Topic: listview e sqlite  (Letto 734 volte)

Offline xixietto

listview e sqlite
« il: 12 Giugno 2015, 14:36:37 CEST »
0
HO UN PROBLEMA.. questo pezzo di codice mi stampa solo un valore... cioè l'ultimo...
perchè non mi stampa tutti i valori nella listview?
sapete aiutarmi?
Codice (Java): [Seleziona]
public class Add extends Activity {
    private DbHelper helper =new DbHelper(this);    //  private DbHelper helper = null;   //  helper= new DbHelper(this);
    ListView listView;

    @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add);

        listView = (ListView) findViewById(R.id.listView);
        SQLiteDatabase db = helper.getReadableDatabase();//sola lettura x fare query

        Cursor r = db.rawQuery("SELECT titolo FROM padre", null);
        while (r.moveToNext()) {

            // definisco un array di stringhe
           String[] nameproducts = new String[]{r.getString(0)};


// definisco un array
        final ArrayList<String> listp = new ArrayList<String>();
        for (int i = 0; i < nameproducts.length; ++i) {
            listp.add(nameproducts[i]);
        }
        // creo e istruisco l'adattatore
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listp);

        // inietto i dati
        listView.setAdapter(adapter);
        }
    }

Offline Brontomania

  • Nuovo arrivato
  • *
  • Post: 32
  • Dinosauro di lanetta
  • Respect: +5
    • Github
    • Google+
    • @Brontomania
    • Mostra profilo
  • Dispositivo Android:
    HTC One, Nexus 7, Nexus S
  • Sistema operativo:
    Windows 10
Re:listview e sqlite
« Risposta #1 il: 12 Giugno 2015, 16:19:56 CEST »
0
Non ho mai provato il moveToNext() nella condizione del While.
Prova con
r.moveToFirst();
for(int i=0;i<r.getCount();i++){
...
...

r.MoveToNext()
}

Offline xixietto

Re:listview e sqlite
« Risposta #2 il: 12 Giugno 2015, 16:26:20 CEST »
0
Nn cambia nulla... Credo che mi legge stampa tutti i valori..ma mi fa visualizzare solo l ultimo.. Forse è perché   sta nel while qualche pezzo d codice

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline Brontomania

  • Nuovo arrivato
  • *
  • Post: 32
  • Dinosauro di lanetta
  • Respect: +5
    • Github
    • Google+
    • @Brontomania
    • Mostra profilo
  • Dispositivo Android:
    HTC One, Nexus 7, Nexus S
  • Sistema operativo:
    Windows 10
Re:listview e sqlite
« Risposta #3 il: 12 Giugno 2015, 16:29:27 CEST »
0
Nel For di lettura della listview hai messo ++i invece di i++
Forse è quello il problema (ce provo!)  ;-)

Offline xixietto

Re:listview e sqlite
« Risposta #4 il: 12 Giugno 2015, 16:31:25 CEST »
0
Provo un attimo...:) ma dentro al for  cosa metto?

Inviato dal mio GT-I9505 utilizzando Tapatalk

« Ultima modifica: 12 Giugno 2015, 16:34:58 CEST da xixietto »

Offline Brontomania

  • Nuovo arrivato
  • *
  • Post: 32
  • Dinosauro di lanetta
  • Respect: +5
    • Github
    • Google+
    • @Brontomania
    • Mostra profilo
  • Dispositivo Android:
    HTC One, Nexus 7, Nexus S
  • Sistema operativo:
    Windows 10
Re:listview e sqlite
« Risposta #5 il: 12 Giugno 2015, 16:36:58 CEST »
0
Credo sia errato l'incremento dell'indice. Metti i++ invece di ++i

Offline xixietto

Re:listview e sqlite
« Risposta #6 il: 12 Giugno 2015, 16:38:06 CEST »
0
intendevo.. sotto dv hai messo i punti di sospensione.. cs metto?

Post unito: 12 Giugno 2015, 16:39:45 CEST
comunque ho provato a cambiare il contatore da +ii a i++ ma nnt  :-(
« Ultima modifica: 12 Giugno 2015, 16:39:45 CEST da xixietto, Reason: Merged DoublePost »

Offline Brontomania

  • Nuovo arrivato
  • *
  • Post: 32
  • Dinosauro di lanetta
  • Respect: +5
    • Github
    • Google+
    • @Brontomania
    • Mostra profilo
  • Dispositivo Android:
    HTC One, Nexus 7, Nexus S
  • Sistema operativo:
    Windows 10
Re:listview e sqlite
« Risposta #7 il: 12 Giugno 2015, 16:57:42 CEST »
0
int j=r.getCount();
String[] nameproducts=new String[j];
r.moveToFirst();
for(int i=0;i<r.getCount();i++){
nameproducts = r.getString(0);
r.MoveToNext()
}
r.close();

... poi nell'altro For metti i++ al posto di ++i

se non ho scazzato nella fretta dovrebbe andare

Offline xixietto

Re:listview e sqlite
« Risposta #8 il: 12 Giugno 2015, 17:00:01 CEST »
0
Mmm.. Niente da fare.. Ma come si fa a stampare i valori presi da una query?

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline Brontomania

  • Nuovo arrivato
  • *
  • Post: 32
  • Dinosauro di lanetta
  • Respect: +5
    • Github
    • Google+
    • @Brontomania
    • Mostra profilo
  • Dispositivo Android:
    HTC One, Nexus 7, Nexus S
  • Sistema operativo:
    Windows 10
Re:listview e sqlite
« Risposta #9 il: 17 Giugno 2015, 09:05:48 CEST »
0
La procedura che utilizzi mi pare corretta. Prova a passare direttamente dal cursore all'ArrayList (saltando l'array di stringhe del ciclo while)
 r.moveToFirst();
 for (int i = 0; i < r.getCount(); i++) {
            listp.add(r.getString(0));
            r.moveToNext();
        }

Offline xixietto

Re:listview e sqlite
« Risposta #10 il: 17 Giugno 2015, 10:38:00 CEST »
0
Provo e ti fccio sapere

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline xixietto

Re:listview e sqlite
« Risposta #11 il: 17 Giugno 2015, 15:57:41 CEST »
0
mi trovo in questa situazione...
la listview visualizza due volte i risultati...
es:

casa
casa
letto
letto
computer
computer



 non riesco a venirne a capo.

Codice (Java): [Seleziona]
public class Add extends Activity {
    private DbHelper helper =new DbHelper(this);    //  private DbHelper helper = null;   //  helper= new DbHelper(this);
    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add);

        listView = (ListView) findViewById(R.id.listView);
        SQLiteDatabase db = helper.getReadableDatabase();//sola lettura x fare query

        Cursor r = db.rawQuery("SELECT titolo FROM padre", null);
        r.moveToFirst();
    final ArrayList<String> listp = new ArrayList<String>();

    for (int i = 0; i < r.getCount(); i++) {
            listp.add(r.getString(0));
            r.moveToNext();
        }
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listp);
        // inietto i dati
            listView.setAdapter(adapter);
        }
    }
« Ultima modifica: 17 Giugno 2015, 16:38:58 CEST da xixietto »

Offline Brontomania

  • Nuovo arrivato
  • *
  • Post: 32
  • Dinosauro di lanetta
  • Respect: +5
    • Github
    • Google+
    • @Brontomania
    • Mostra profilo
  • Dispositivo Android:
    HTC One, Nexus 7, Nexus S
  • Sistema operativo:
    Windows 10
Re:listview e sqlite
« Risposta #12 il: 17 Giugno 2015, 17:52:53 CEST »
0
Se sbagli a compilare ti darà sicuramente un errore nel logcat. Incollami il contenuto

TTalk on HTC1


Offline xixietto

Re:listview e sqlite
« Risposta #13 il: 18 Giugno 2015, 14:30:32 CEST »
0
Ma nn ho errori nel logcat ma mi visualizza due volte i valori

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline Brontomania

  • Nuovo arrivato
  • *
  • Post: 32
  • Dinosauro di lanetta
  • Respect: +5
    • Github
    • Google+
    • @Brontomania
    • Mostra profilo
  • Dispositivo Android:
    HTC One, Nexus 7, Nexus S
  • Sistema operativo:
    Windows 10
Re:listview e sqlite
« Risposta #14 il: 18 Giugno 2015, 14:55:45 CEST »
0
Boh, non saprei ... ti conviene fare il debug con qualche breakpoint nel codice e visualizzare i valori nelle finestre di watch. Così a occhio il codice mi pare corretto, ma potrebbe anche darsi che tu abbia dei valori doppi nel db e ti salgano già doppi dalla query.