CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: ryouza con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: carotix con ben 11 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 26 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 7 su 7
Discussione:

database sqlite e listview

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Jul 2014
    Messaggi
    61

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    database sqlite e listview

    Salve, sapreste aiutarmi a creare un database sqlite e una listview per la mia app?
    non so come si creano...

  2.  
  3. #2
    Androidiani Power User L'avatar di cesco


    Registrato dal
    Sep 2010
    Località
    Bg
    Messaggi
    5,018
    Smartphone
    TYTN2,desire,desireHD, oneX

    Ringraziamenti
    54
    Ringraziato 1,346 volte in 724 Posts
    Predefinito

    Quote Originariamente inviato da xixietto Visualizza il messaggio
    Salve, sapreste aiutarmi a creare un database sqlite e una listview per la mia app?
    non so come si creano...
    Usa questa libreria per il database SQL: https://github.com/pardom/ActiveAndr...etting-started

    Per la listview devi crearti l'adapter:

     
    1
    2
    public class MyBaseAdapter extends BaseAdapter {
    3
    4
        private Context mContext;
    5
        private List<MySqlObject> mObjects;
    6
    7
        public MyBaseAdapter(Context con, List<MySqlObject> objs) {
    8
            // constructor
    9
            this.mContext = con;
    10
            this.mObjects = objs;
    11
        }
    12
    13
         @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    14
        public int getCount() {
    15
            return mObjects.size();
    16
        }
    17
    18
         @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    19
        public Profile getItem(int arg0) {
    20
            return mObjects.get(arg0);
    21
        }
    22
    23
         @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    24
        public long getItemId(int arg0) {
    25
            return mObjects.get(arg0).hashCode();
    26
        }
    27
        
    28
        //remove items from the adapter and notify it
    29
        public void remove(int position) {
    30
            mObjects.remove(position);
    31
            this.notifyDataSetChanged();
    32
        }
    33
        
    34
    35
         @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    36
        public View getView(final int position, View convertView, ViewGroup parent) {
    37
            ViewHolder holder;
    38
            if(convertView == null) {
    39
                LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    40
                convertView = inflater.inflater(R.layout.my_row_layout, parent, false);
    41
                holder = new ViewHolder();
    42
                holder.mTitle = (TextView) convertView.findViewById(R.id.title);
    43
                holder.mSummary = (TextView) convertView.findViewById(R.id.summary);
    44
                convertView.setTag(holder);
    45
            }else{
    46
                holder = (ViewHolder) convertView.getTag();
    47
            }
    48
            holder.mTitle.setText(getItem(position).title);
    49
            holder.mSummary.setText(getItem(position).summary);
    50
            
    51
            return convertView;
    52
        }
    53
        
    54
        class ViewHolder {
    55
            TextView mTitle;
    56
            TextView mSummary;
    57
        }
    58
    }
    59


    questo è un esempio di adapter
    la classe ViewHolder viene utilizzata per una questione di performance, dato che gli adapters riciclano le views. In questo modo, se l'adapter ad una determinata posizione, ha già creato la view andrà a ripescarla, in caso contrario "creerà" la nuova view (convertView == null | convertView != null).

    Chiaramente devi implementare, il tuo layout, il tuo ViewHolder e la tua "lista di oggetti"
    Ultima modifica di cesco; 08-09-14 alle 16:59
    Follow me on:
    <!-- Place this tag where you want the widget to render. -->
    <div class="g-person" data-width="180" data-href="//plus.google.com/113012341277613226011" data-theme="dark" data-rel="author"></div>

    <!-- Place this tag after the last widget tag. -->
    <script type="text/javascript">
    window.___gcfg = {lang: 'it'};

    (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
    })();
    </script>
    <br>
    <a class="twitter-timeline" href="https://twitter.com/xcesco89" data-widget-id="398762031488040960">Tweets di @xcesco89</a>
    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementB yId(id)){js=d.createElement(s);js.id=id;js.src=p+" ://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}} (document,"script","twitter-wjs");</script>
    Androidiani app
    Estensione Androidiani per Google Chrome

  4. #3
    Androidiano


    Registrato dal
    Jul 2014
    Messaggi
    61

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Salve, che tipo di libreria è quella?
    come viene organizzata e come gestirla ?
    per ora ho solo importato la libreria..
    Ultima modifica di xixietto; 12-09-14 alle 16:36

  5. #4
    Androidiani Power User L'avatar di cesco


    Registrato dal
    Sep 2010
    Località
    Bg
    Messaggi
    5,018
    Smartphone
    TYTN2,desire,desireHD, oneX

    Ringraziamenti
    54
    Ringraziato 1,346 volte in 724 Posts
    Predefinito

    Quote Originariamente inviato da xixietto Visualizza il messaggio
    Salve, che tipo di libreria è quella?
    come viene organizzata e come gestirla ?
    per ora ho solo importato la libreria..
    A questo link spiega passo passo come implementare il tutto: https://github.com/pardom/ActiveAndr...etting-started
    fondamentalmente, devi inizializzare la libreria come indicato , quindi settando il manifest e creando una classe che estenda la classe Application di ActiveAndroid.

    La libreria è basata sulle annotazioni (@qualcosa(qualche parametro))

    ogni classe che e estende "Model" diverrà fisicamente un elemento nelle tabelle SQL.
    Per ogni classe che estende "Model" ActiveAndroid creerà una tabella nel DB contenente tutti quei modelli.

    Ovviamente puoi collegare più modelli fra loro e ActiveAndroid li "linkerà" automaticamente (vedi esempi nel wiki della libreria)

    Il query è davvero semplice da fare e puoi scegliere se ricevere un elemento singolo o una lista (List<miaclasse extends Model>)

    anche l'eliminazione degli elementi è davvero banale.

    Un esempio di modello:
    Spoiler:

    Alcuni esempi per l'interazione con il database:
    Spoiler:


    Più semplice di così..
    Follow me on:
    <!-- Place this tag where you want the widget to render. -->
    <div class="g-person" data-width="180" data-href="//plus.google.com/113012341277613226011" data-theme="dark" data-rel="author"></div>

    <!-- Place this tag after the last widget tag. -->
    <script type="text/javascript">
    window.___gcfg = {lang: 'it'};

    (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
    })();
    </script>
    <br>
    <a class="twitter-timeline" href="https://twitter.com/xcesco89" data-widget-id="398762031488040960">Tweets di @xcesco89</a>
    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementB yId(id)){js=d.createElement(s);js.id=id;js.src=p+" ://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}} (document,"script","twitter-wjs");</script>
    Androidiani app
    Estensione Androidiani per Google Chrome

  6. #5
    Androidiano


    Registrato dal
    Jul 2014
    Messaggi
    61

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    ho risolto con il database
    17
     
    1
    public void onCreate(SQLiteDatabase db) { 
    2
        // Creazione delle tabelle
    3
             String sql = ""; 
    4
             sql += "CREATE TABLE movimento ("; 
    5
             sql += " _id INTEGER PRIMARY KEY,"; 
    6
             sql += " entrata_uscita TEXT NOT NULL,";
    7
             sql += " importo INTEGER NOT NULL,";
    8
             sql += " descrizione TEXT NOT NULL,"; 
    9
             sql += " data TEXT NOT NULL"; 
    10
             sql += ")"; 
    11
             db.execSQL(sql);
    12
     } 
    13
    public Cursor getAll()
    14
    {
    15
        String query = "SELECT(*) FROM movimento";
    16
        return getReadableDatabase().rawQuery(query, null);
    17
    }



    ho usato un altro modo per il db....ora non capisco come creare la listview...
    Ultima modifica di xixietto; 16-09-14 alle 16:12

  7. #6
    Androidiani Power User L'avatar di cesco


    Registrato dal
    Sep 2010
    Località
    Bg
    Messaggi
    5,018
    Smartphone
    TYTN2,desire,desireHD, oneX

    Ringraziamenti
    54
    Ringraziato 1,346 volte in 724 Posts
    Predefinito

    Quote Originariamente inviato da xixietto Visualizza il messaggio
    ho risolto con il database
    17
     
    1
    public void onCreate(SQLiteDatabase db) { 
    2
        // Creazione delle tabelle
    3
             String sql = ""; 
    4
             sql += "CREATE TABLE movimento ("; 
    5
             sql += " _id INTEGER PRIMARY KEY,"; 
    6
             sql += " entrata_uscita TEXT NOT NULL,";
    7
             sql += " importo INTEGER NOT NULL,";
    8
             sql += " descrizione TEXT NOT NULL,"; 
    9
             sql += " data TEXT NOT NULL"; 
    10
             sql += ")"; 
    11
             db.execSQL(sql);
    12
     } 
    13
    public Cursor getAll()
    14
    {
    15
        String query = "SELECT(*) FROM movimento";
    16
        return getReadableDatabase().rawQuery(query, null);
    17
    }



    ho usato un altro modo per il db....ora non capisco come creare la listview...

    creati una classe per gestire tutti i valori:

    21
     
    1
    2
    public class Movimento {
    3
    4
    public Movimento (int _id, String _in_out, String _importo, String _desc, String _data) {
    5
    this.id = _id;
    6
    this.entrata_uscita = _in_out;
    7
    this.importo = _importo;
    8
    this.descrizione = _desc;
    9
    this.data = _data;
    10
    }
    11
    12
    public Movimento() {
    13
    //empty constructor
    14
    }
    15
    16
    public int id;
    17
    public String entrata_uscita;
    18
    public String importo;
    19
    public String descrizione;
    20
    public String data;
    21



    aggiungi questo metodo per avere il tutto in formato lista:

    39
     
    1
    2
    public ArrayList<Movimento> getResults() {
    3
    4
        MyDb db = new MyDb(this); //instanzia il tuo database
    5
        db.open(); 
    6
    7
        ArrayList<Movimento> resultList = new ArrayList<Movimento>();
    8
    9
        Cursor c = db.getAll();
    10
        while (c.moveToNext())
    11
        {
    12
            int id = c.getInt(c.getColumnIndex("_id)
    13
            String in_out = c.getString(c.getColumnIndex("entrata_uscita"));
    14
            String importo = c.getString(c.getColumnIndex("importo"));
    15
            String descrizione = c.getString(c.getColumnIndex("descrizione"));
    16
            String data = c.getString(c.getColumnIndex("data"));
    17
    18
            try
    19
            {
    20
                Movimento mov = new Movimento();
    21
                mov.id = id;
    22
                mov.entrata_uscita = in_out;
    23
                mov.importo = importo;
    24
                mov.descrizione = descrizione;
    25
                mov.data = data;
    26
                resultList.add(mov);
    27
            }
    28
            catch (Exception e) {
    29
                Log.e(MY_DEBUG_TAG, "Error " + e.toString());
    30
            }
    31
    32
        }
    33
    34
        c.close();
    35
    36
        db.close();
    37
        return resultList;
    38
    }
    39


    una volta ottenuta la lista devi impostare correttamente l'adapter. Quello postato nel mio post precedente è una buona base di partenza (cambia List<MySqlObject> in ArrayList<Movimento>).

    Ricorda di creare il layout per le righe della listview e soprattutto aggiungi eventuali view al viewholder, come indicato nell'esempio

    una volta fatto tutto:
    5
     
    1
    2
    mList = (ListView) findViewById(R.id.mia_lista);
    3
    mAdapter = new MioSqlListAdapter(parametri);
    4
    mList.setAdapter(mAdapter);
    5
    Follow me on:
    <!-- Place this tag where you want the widget to render. -->
    <div class="g-person" data-width="180" data-href="//plus.google.com/113012341277613226011" data-theme="dark" data-rel="author"></div>

    <!-- Place this tag after the last widget tag. -->
    <script type="text/javascript">
    window.___gcfg = {lang: 'it'};

    (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
    })();
    </script>
    <br>
    <a class="twitter-timeline" href="https://twitter.com/xcesco89" data-widget-id="398762031488040960">Tweets di @xcesco89</a>
    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementB yId(id)){js=d.createElement(s);js.id=id;js.src=p+" ://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}} (document,"script","twitter-wjs");</script>
    Androidiani app
    Estensione Androidiani per Google Chrome

  8. #7
    Androidiano


    Registrato dal
    Jul 2014
    Messaggi
    61

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    scusami se chiedo ogni mio problema qui... ma "MyDb db = new MyDb(this); //instanzia il tuo database
    come devo modificare ?

    questo è il mio db...
    30
     
    1
    2
    public class MioDatabaseHelper extends SQLiteOpenHelper { 
    3
    private static final String DB_NAME = "gestione_soldi_db"; 
    4
    private static final int DB_VERSION = 1; 
    5
    public MioDatabaseHelper(Context context) { 
    6
     super(context, DB_NAME, null, DB_VERSION); 
    7
     } 
    8
     @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    9
    public void onCreate(SQLiteDatabase db) { 
    10
        // Creazione delle tabelle
    11
             String sql = ""; 
    12
             sql += "CREATE TABLE movimento ("; 
    13
             sql += " _id INTEGER PRIMARY KEY,"; 
    14
             sql += " entrata_uscita TEXT NOT NULL,";
    15
             sql += " importo INTEGER NOT NULL,";
    16
             sql += " descrizione TEXT NOT NULL,"; 
    17
             sql += " data TEXT NOT NULL"; 
    18
             sql += ")"; 
    19
             db.execSQL(sql);
    20
     } 
    21
    public Cursor getAll()
    22
    {
    23
        String query = "SELECT(*) FROM movimento";
    24
        return getReadableDatabase().rawQuery(query, null);
    25
    }
    26
     @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    27
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    28
     // Aggiornamento delle tabelle
    29
     } 
    30
    } 


    2) nella classe mvimento inserisco il metodo "public ArrayList<Movimento> getResults() {.........." ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy