Autore Topic: Problema o sqlite o listview  (Letto 812 volte)

Offline paciuz

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Xperia X10 mini
  • Sistema operativo:
    Windows 7 , Ubuntu
Problema o sqlite o listview
« il: 15 Gennaio 2011, 12:51:35 CET »
0
Salve a tutti,
grazie a voi e ai vostri tutorial sto imparando molte cose... come scritto nei miei vecchi posto io parto da 0 come conosciuenza di java ecc...
comunque sono ad esporvi il mio problema...
Prendendo spunto da un tutorial trovato qui ho creato la classe per gestire il db
Codice (Java): [Seleziona]
public class MYClassDb {  

    SQLiteDatabase mDb;
    DbHelper mDbHelper;
    Context mContext;
    private static final String DB_NAME="builddb";//nome del db
    private static final int DB_VERSION=1; //numero di versione del nostro db
   
    public MYClassDb(Context ctx){
            mContext=ctx;
            mDbHelper=new DbHelper(ctx, DB_NAME, null, DB_VERSION);        
    }
   
    public void open(){
            mDb=mDbHelper.getWritableDatabase();
           
    }
   
    public void close(){
            mDb.close();
    }
   
    public void insertProduct(String name,int forma){ //metodo per inserire i dati
            ContentValues cv=new ContentValues();
            cv.put(ProductsMetaData.PRODUCT_NAME_KEY, name);
            cv.put(ProductsMetaData.PRODUCT_FORMA_KEY, forma);
            mDb.insert(ProductsMetaData.PRODUCTS_TABLE, null, cv);
    }
   
    public Cursor fetchProducts(){ //metodo per fare la query di tutti i dati
            return mDb.query(ProductsMetaData.PRODUCTS_TABLE, null,null,null,null,null,null);              
    }

    static class ProductsMetaData {  // i metadati della tabella, accessibili ovunque
            static final String PRODUCTS_TABLE = "build";
            static final String ID = "_id";
            static final String PRODUCT_NAME_KEY = "Nome";
            static final String PRODUCT_FORMA_KEY = "Forma";
    }

    private static final String PRODUCTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
                    + ProductsMetaData.PRODUCTS_TABLE + " ("
                    + ProductsMetaData.ID+ " integer primary key autoincrement, "
                    + ProductsMetaData.PRODUCT_NAME_KEY + " text not null, "
                    + ProductsMetaData.PRODUCT_FORMA_KEY + " integer not null);";

    private class DbHelper extends SQLiteOpenHelper { //classe che ci aiuta nella creazione del db

            public DbHelper(Context context, String name, CursorFactory factory,int version) {
                    super(context, name, factory, version);
            }

            @Override
            public void onCreate(SQLiteDatabase _db) { //solo quando il db viene creato, creiamo la tabella
                    _db.execSQL(PRODUCTS_TABLE_CREATE);
            }

            @Override
            public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion) {
                    //qui mettiamo eventuali modifiche al db, se nella nostra nuova versione della app, il db cambia numero di versione

            }

    }
           

}

ho creato la classe del layout che legge il db

Codice (Java): [Seleziona]
public class Build extends Activity {
    /** Called when the activity is first created. */
         
    @Override
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        setContentView(R.layout.Build);
        MYClassDb db=new MYClassDb(getApplicationContext());
        db.open();  //apriamo il db
       
        ListView productsLv=(ListView)findViewById(R.id.ListView01);
       
        if(db.fetchProducts().getCount()==0){//inserimento dati, solo se il db è vuoto
       
                db.insertProduct("Palazzo", 7);
                db.insertProduct("Casa", 6);
                db.insertProduct("Terratetto", 5);
               
       
        }
        Cursor c=db.fetchProducts(); // query
        startManagingCursor(c);


       
       
        SimpleCursorAdapter adapter=new SimpleCursorAdapter( //semplice adapter per i cursor
                        this,
                        R.layout.buildr, //il layout di ogni riga/prodotto
                        c,
                        new String[]{MYClassDb.ProductsMetaData.PRODUCT_NAME_KEY,MYClassDb.ProductsMetaData.PRODUCT_FORMA_KEY},//questi colonne
                        new int[]{R.id.Nome,R.id.Forma});//in queste views
       
        productsLv.setAdapter(adapter);        
       
       
        db.close();
    }
}

e nel layout build.xml c'è la list view che vorrei popolare...

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >


        <ListView
               android:id="@+id/ListView01"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               android:cacheColorHint="#00000000"
               android:dividerHeight="2dp"
                               
       ></ListView>

</LinearLayout>

e ho infine creato il layout di ogni singola riga della listview
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
        <TextView              
               android:id="@+id/Nome"
               android:layout_width="0dp"
               android:layout_height="wrap_content"
               android:layout_weight="8"
               android:textSize="15dp"
               android:textStyle="bold"
               android:textColor="#ffbbcc">
        </TextView>
        <TextView              
               android:id="@+id/Forma"
               android:layout_width="0dp"
               android:layout_height="wrap_content"
               android:layout_weight="2"
               android:textSize="15dp"
               android:textStyle="bold"
               android:textColor="#ffbbcc">
        </TextView>
</LinearLayout>

vedo le righe della list view ma tutte completamente nere... si capisce che inserisce nel db e ci riesce a leggere ma mi vedo una list view di 3 righe senza scritto niente... dov'è che sbaglio?
vi ringrazio anticipatamente e mi scuso in partenza se sono poco chiaro ma ho poca dimestichezza con termini java.


« Ultima modifica: 15 Gennaio 2011, 14:02:48 CET da Qlimax »

Offline paciuz

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Xperia X10 mini
  • Sistema operativo:
    Windows 7 , Ubuntu
Re:Problema o sqlite o listview
« Risposta #1 il: 17 Gennaio 2011, 15:19:12 CET »
0
Nessuno può darmi una mano?? Cio che mi viene fuori è quello che vedete nell'allegato... La scritta PROVA stranamente è il android:text della text view che ho messo sopra la listview che si dovrebbe popolare con i dati da db... Quindi si capisce che ci sono 3 record nella tabella ma non mi tira su le stringhe... mmmm sapete cosa possa dargli noia... ???

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Problema o sqlite o listview
« Risposta #2 il: 17 Gennaio 2011, 15:57:52 CET »
0
hai provato togliendo
android:layout_width="0dp"
e
 android:layout_weight="8" ( android:layout_weight="2" per l altra)

dalle textview a vedere se il problema persiste?

e mettere
android:layout_width="fill_parent" in tutte e due


« Ultima modifica: 17 Gennaio 2011, 16:00:06 CET da Qlimax »

Offline giumazzi

  • Utente junior
  • **
  • Post: 54
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    acer liquid - android 2.1
  • Sistema operativo:
    windows xp - linux xubuntu - easy peasy
Re:Problema o sqlite o listview
« Risposta #3 il: 17 Gennaio 2011, 17:13:08 CET »
0
Credo proprio si tratti di quello.
0 dp di largehzza non può far vedere nulla.
 
Prova come ha detto Qlimax.
 

Offline paciuz

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Xperia X10 mini
  • Sistema operativo:
    Windows 7 , Ubuntu
Re:Problema o sqlite o listview
« Risposta #4 il: 17 Gennaio 2011, 22:19:23 CET »
0
Vi ringrazio anticipatamente ma non è quello... giuro che non ci capisco + niente... non è la dimensione perchè sennò non avrebbe ripetuto  neanche la scritta PROVA.... o sbaglio???
QLIMAX ho usato il tuo tutorial ma niente...ho provato anche prendendo il tuo progetto  di demo, che di normale funziona, ma modificandolo  aggiungendo un campo niente...continua a farmi righe vuolte... ora allego il mio progetto se mi potete dare una mano ve ne sarei gratissimo.... 

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Problema o sqlite o listview
« Risposta #5 il: 17 Gennaio 2011, 22:47:54 CET »
0
Sai cos'é secondo me? che la weight 2 é troppo bassa e quindi il layout viene schiacciato a tal punto che non ti si vede il testo.
Ti sei accorto che l'orientamento del singolo elemento é verticale vero? Sei sicuro di volere che "Forma" compaia sotto "Nome"?

E poi, dov'é questa TextView con la scritta prova? Non la vedo negli xml
Postate il LogCat LogCat LogCat LogCat LogCat

Offline paciuz

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Xperia X10 mini
  • Sistema operativo:
    Windows 7 , Ubuntu
Re:Problema o sqlite o listview
« Risposta #6 il: 18 Gennaio 2011, 16:22:09 CET »
0
ok ho risolto...non mi chiedete che problema fosse ma ho rifatto il progetto da capo e ora funziona... devo capire meglio come funzionano le list view ecc ecc... ora ho un altro problema dio gestione file ma lo scrivo nel forum giusto.. grazie mille ancora...