CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: gianpassa 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

Pagina 2 di 2 primaprima 12
Visualizzazione dei risultati da 11 a 19 su 19
Discussione:

[Facile] ListView con Custom Adapter

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. #11
    Baby Droid


    Registrato dal
    Jun 2015
    Messaggi
    3

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Guardando l esempio nn riesco a capire come fa.. Vi potrei postare il mio pezzo d codice?

    Ma dovrei creare un adapter?
    Ultima modifica di Crotan; 15-06-15 alle 18:51

  2.  
  3. #12
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Per prima cosa sarebbe bene specificare che cosa vuoi fare altrimenti è difficile darti consigli mirati.

    P.S. Ti ho unito i messaggi. Non farne due consecutivi, modifica il primo.

  4. #13
    Baby Droid


    Registrato dal
    Jun 2015
    Messaggi
    3

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Non riesco a mettere il risultato di una query in un array per passarlo nell adapter. In pratica i risultati ottenuti da una query.. Gli vorrei visualizzare in una listview. Ogni riga della listview apre pagine differenti a seconda della riga premuta.

  5. #14
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Posta il codice. Vediamo intanto cosa hai fatto di tuo pugno.

  6. #15
    Baby Droid


    Registrato dal
    Jul 2015
    Messaggi
    49

    Ringraziamenti
    4
    Ringraziato 2 volte in 2 Posts
    Predefinito

    in caso dovreilavorare con dati presi dal database sqlite?

  7. #16
    Baby Droid


    Registrato dal
    Jul 2015
    Messaggi
    49

    Ringraziamenti
    4
    Ringraziato 2 volte in 2 Posts
    Unhappy

    non riesco a capire come caricare la mia lista.. ho due textview e i dati vengono prelevati dal db sqlite
    posto il codice:
    1)creo l'activity con la listview
     
    1
     <ListView
    2
            android:layout_width="wrap_content"
    3
            android:layout_height="wrap_content"
    4
            android:id="@+id/listView"
    5
            android:layout_below="@+id/textView"
    6
            android:layout_alignParentStart="true"
    7
            android:layout_alignParentBottom="true" />


    2)Main_activity
    x
     
    1
        private DbHelper helper =new DbHelper(this);    //  private DbHelper helper = null;   //  helper= new DbHelper(this);
    2
        ListView listView;
    3
        EditText editText;
    4
        Button button;
    5
       
    6
    7
             @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    8
            protected void onCreate(Bundle savedInstanceState) {
    9
                super.onCreate(savedInstanceState);
    10
                setContentView(R.layout.salsicce);
    11
                //per settare actionBar
    12
                String C = "#ff8823";
    13
                ActionBar actionBar = getActionBar();
    14
                actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(C))); // impostare colore desiderato actionBar
    15
    16
                listView = (ListView) findViewById(R.id.listView);
    17
                listView.setFastScrollEnabled(true);
    18
                editText = (EditText) findViewById(R.id.editText);
    19
                button = (Button) findViewById(R.id.button);
    20
                final SQLiteDatabase db = helper.getReadableDatabase();//sola lettura x fare query
    21
                Intent intent = getIntent(); // l'intent di questa activity
    22
    23
    24
                String Salsiccia = getPackageName(); //prendere stringa passata
    25
                final String id_figlio = intent.getStringExtra(Salsiccia + ".myIn");
    26
    27
    28
                //prendere valore edittext cn bottone
    29
                button.setOnClickListener(new View.OnClickListener(){
    30
                     @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    31
                    public void onClick(View arg0) {
    32
                        String Valore = editText.getText().toString();
    33
                        // verifico se è vuoto
    34
                        if ( Valore.trim().isEmpty() ) {
    35
                            // visualizzo un messaggio definito in strings.xml
    36
                            editText.setError(getText(R.string.errore));
    37
                            // attivo il controllo
    38
                            editText.requestFocus();
    39
    40
                        }
    41
                        else{
    42
                        int ValoreIntero = Integer.parseInt(Valore);
    43
                        float ValoreFloat = Float.parseFloat(Valore);
    44
                        Log.d("valore edit", (Valore+" " + ValoreIntero+" " + ValoreFloat));
    45
    46
                        //valore
    47
                        Cursor a = db.rawQuery("SELECT valore FROM unioneingredienti WHERE idfiglio=?", new String[]{id_figlio});
    48
                        a.moveToFirst();
    49
                        final ArrayList<Integer> list_valore = new ArrayList<Integer>();
    50
                        for (int z = 0; z < a.getCount(); z++) {
    51
                            Log.d("idpadre", String.valueOf((a.getInt(0)*ValoreIntero)));
    52
    53
                            list_valore.add(a.getInt(0));
    54
                            a.moveToNext();
    55
    56
    57
                        }
    58
                        }}
    59
                });
    60
    61
    62
                Cursor c = db.rawQuery("SELECT idingredienti FROM unioneingredienti WHERE idfiglio=?", new String[]{id_figlio});
    63
                c.moveToFirst();
    64
                final ArrayList<String> listp = new ArrayList<>();
    65
    66
                for (int z = 0; z < c.getCount(); z++) {
    67
                    Cursor r = db.rawQuery("SELECT nome FROM ingredienti WHERE _id=?", new String[]{c.getString(0)});
    68
                    r.moveToFirst();
    69
                    for (int i = 0; i < r.getCount(); i++) {
    70
                        Log.d("idpadre", (r.getString(0) + c.getString(0) + r.getCount()));
    71
                        listp.add(r.getString(0));
    72
                        r.moveToNext();
    73
                    }
    74
                    c.moveToNext();
    75
    76
                    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.row_salsicce, R.id.textViewList, listp);
    77
                    listView.setAdapter(adapter);
    78
                }
    79


    3)creo activity che contiene le righe(2 textview) per la listview
    27
     
    1
    <TextView
    2
            android:id="@+id/textViewList"
    3
            android:background="@drawable/color_list"
    4
            android:layout_width="wrap_content"
    5
            android:layout_height="wrap_content"
    6
            android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
    7
            android:textSize="18sp"
    8
            android:hint="nome_ingrediente"
    9
            android:textStyle="bold"
    10
            android:textColor="#ffffff"
    11
            android:layout_centerVertical="true"
    12
            android:layout_alignParentLeft="true"
    13
            android:layout_alignParentStart="true" />
    14
    15
        <TextView
    16
            android:id="@+id/textViewnum"
    17
            android:background="@drawable/color_list"
    18
            android:layout_width="wrap_content"
    19
            android:layout_height="wrap_content"
    20
            android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
    21
            android:textSize="18sp"
    22
            android:hint="numero"
    23
            android:textStyle="bold"
    24
            android:textColor="#ffffff"
    25
            android:layout_alignParentTop="true"
    26
            android:layout_toEndOf="@+id/textViewList"
    27
            android:layout_alignParentStart="false" />


    4) essendo che dovrei prendere i valori dal database sqlite non ho capito come creare l'adapter


    come modifico il main_activity per fare in modo di passare due textview nella listview?
    come creo l'adapter?

    help!!

  8. #17
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    @Fabriziocolazzo, vediamo di dare una risposta definitiva al tuo problema.

    Premessa
    La ListView è un componente deprecato. Al suo posto a partire dalle API di livello 21 (Lollipop) è stato introdotto il RecyclerView, di cui ti invito a leggere la documentazione ufficiale. Pertanto, sin dalla partenza stai utilizzando una metodica obsoleta e superata. Stesso discorso per la ActionBar: rimpiazzata dalla Toolbar.

    Il tuo problema
    Il prelevamento dei dati da un database SQLite e l'inserimento in una lista è una delle operazioni più comuni su Android. Il tuo approccio è tuttavia poco elegante: dovresti creare una classe helper che ti aiuta nella del database con metodi setter e getter. A riguardo, seppur non dettagliatamente trovi una mia guida che ti mostra come fare: https://www.androidiani.com/forum/tu...se-sqlite.html.

    Per popolare un ArrayAdapter custom devi utilizzare un ArrayList con un tuo oggetto, come trovi fatto nella qui presente guida. Ti basterebbe creare una classe "Info" con dentro tutti i campi di cui necessiti.

    6
     
    1
    2
    public class Info {
    3
         public int tuoValore;
    4
         //altri dati di cui necessiti
    5
    }
    6


    E, successivamente, preferibilmente all'interno di un ciclo while e non for:

    9
     
    1
    2
    ArrayList<Info> arrayList = new ArrayList<Info>();
    3
    while(cursor.moveToNext()) {
    4
         Info info = new Info();
    5
         info.tuoValore = a.getInt(0);
    6
         //altre operazioni
    7
         arrayList.add(info);
    8
    }
    9


    In questo modo non solo puoi popolare l'ArrayList in un solo ciclo (anzichè due, come hai fatto) unificando le query e gestendo diversamente il blocco di codice iterativo ma è anche una soluzione semplice, efficace e performante.

    Il punto tre che hai esposto è totalmente errato: tu non stai creando un'Activity con quel layout, tu stai creando una riga (row) personalizzata della ListView che poi sarà inserita attraverso il custom adapter. Il layout con le due TextView non farà parte di una Activity ma del custom adapter. Come spiegato in questa guida farai il suo inflate nel metodo getView(). Dopo che hai creato il custom adapter e popolato l'ArrayList sarà sufficiente passare al costruttore dell'Adapter i parametri richiesti (nel tuo caso basterebbe il contesto e l'ArrayList).

    Suggerimenti
    Il tuo codice presenta delle soluzioni poco carine. Per una migliore comprensione del codice suggerisco di:



    • Sostituisci l'ActionBar alla Toolbar
    • Per impostare il colore all'ActionBar anzichè usare tre righe di codice basterebbe fare: getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ff8823")))
    • Per convenzione, in Java come in molti altri linguaggi di programmazione, il nome delle variabili andrebbe scritto in minuscolo riservando il maiuscolo solo ed esclusivamente per gli oggetti e le interfacce.


    Chiedere aiuto sul forum è l'ultima spiaggia: imparare a farlo nel momento dell'effettivo bisogno è sicuramente motivo di crescita umana e professionale. Tu non hai effettuato ricerche nè superficiali nè approfondite sul web visto che l'argomento di cui chiedi aiuto è largamente documentato e discusso su siti quali StackOverflow. Inoltre, ci sono dozzine di tutorial su siti specializzati: AndroidHive, Vogella, Android Developers, giusto per citarne qualcuno. Nessuno scriverà mai del codice per te, sarai sempre tu che dovrai farlo. Possono arrivarti suggerimenti (più o meno corretti) ma alla fine il lavoro effettivo spetterà sempre a te. Utilizzare sapientemente gli strumenti d'informazione a tua disposizione, in aggiunta ad un valido supporto come il forum, ti permetterà di imparare tanto ma se non vengono supportati dalla buona volontà di apprendere e fallire non andrai da nessuna parte. Mi rendo conto che all'inizio è difficile e si tende a voler uscire il prima possibile da queste situazioni intrigate ma posso garantirti che in questo modo non imparerai alcunchè.

    Avvertimenti
    Con te ho dimostrato pazienza e disponibilità ma ti ho avvertito che se continui ad infrangere il Regolamento mi costringerai a prendere provvedimenti. Hai fatto cross-posting pubblicando il tuo post oltre che in questa discussione anche nell'altra a te intestata. In questa sede non è permesso l'inserimento di parole come "help", "urgente", "entrate" e via dicendo. Alla prossima scatta l'infrazione, avvisato.


    Spero, almeno questa volta, di averti allargato gli orizzonti e fornito spunti di cui puoi far tesoro per le tue ricerche individuali.

  9. #18
    Baby Droid


    Registrato dal
    Jul 2015
    Messaggi
    49

    Ringraziamenti
    4
    Ringraziato 2 volte in 2 Posts
    Predefinito

    Apprezzo molto la tua pazienza e comprensione... Mi scuso per gli errori fatti in questo forum.. Il problema è che ho poco tempo a disposizione per lavorare con android.. E quella poca disponibilità la vorrei sfruttare al meglio. Fin dall' inizio ho trovato android molto interessante perché sviluppando quelle piccole app, mi hanno facilitato il lavoro. E quello che sto cercando di creare in questa pagina del forum è una delle applicazioni che potrebbe aiutarmi a velocizzarmi. Spero di essermi espresso nel modo più corretto. Scusami Crotan.. Vedrò di non fare questi errori nelle mie future domande(se ne avrò bisogno)
    Ultima modifica di Fabriziocolazzo; 30-09-15 alle 23:43

  10. Il seguente Utente ha ringraziato Fabriziocolazzo per il post:

    Crotan (30-09-15)

  11. #19
    Baby Droid


    Registrato dal
    Jul 2015
    Messaggi
    49

    Ringraziamenti
    4
    Ringraziato 2 volte in 2 Posts
    Predefinito

    salve, ho seguito alla lettera il tuo tutorial..
    ma il mio passaggio si sviluppa con delle arraylist
    il problema è che non visualizzo nulla nella listview
    posto il codice:
    1) pagina1.xml (inserisco listview)
    9
     
    1
    2
    ........
    3
    <ListView
    4
            android:layout_width="wrap_content"
    5
            android:layout_height="wrap_content"
    6
            android:id="@+id/listView"
    7
            android:layout_below="@+id/editText" />
    8
    ...
    9


    2)Main
    61
     
    1
    public class Salsicce extends Activity {
    2
        private DbHelper helper =new DbHelper(this);    //  private DbHelper helper = null;   //  helper= new DbHelper(this);
    3
        ListView listView;
    4
        EditText editText;
    5
        Button button;
    6
        String[] sottoTesti;
    7
        Adapter_list adapter_list;
    8
    9
            @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    10
            protected void onCreate(Bundle savedInstanceState) {
    11
                super.onCreate(savedInstanceState);
    12
                setContentView(R.layout.salsicce);
    13
              
    14
                listView = (ListView) findViewById(R.id.listView);
    15
                listView.setFastScrollEnabled(true);
    16
    17
    18
                editText = (EditText) findViewById(R.id.editText);
    19
                button = (Button) findViewById(R.id.button);
    20
    21
    22
                final SQLiteDatabase db = helper.getReadableDatabase();//sola lettura x fare query
    23
                Intent intent = getIntent(); // l'intent di questa activity
    24
    25
    26
                String Salsiccia = getPackageName(); //prendere stringa passata
    27
                final String id_figlio = intent.getStringExtra(Salsiccia + ".myIn");
    28
    29
    30
    31
                listView.setFastScrollEnabled(true);
    32
    33
    34
                                            //nome ingrediente per salsiccia
    35
                Cursor c = db.rawQuery("SELECT idingredienti FROM unioneingredienti WHERE idfiglio=?", new String[]{id_figlio});
    36
                ArrayList<String> listp = new ArrayList<>();
    37
                while(c.moveToNext()) {
    38
                    Cursor r = db.rawQuery("SELECT nome FROM ingredienti WHERE _id=?", new String[]{c.getString(0)});
    39
                    r.moveToNext();
    40
                        listp.add(r.getString(0));
    41
                    }
    42
    43
    44
                String figlio = intent.getStringExtra(Salsiccia + ".myString");
    45
                String id_padre = intent.getStringExtra(Salsiccia + ".myInt");
    46
    47
    48
                TextView tv = (TextView) findViewById(R.id.nome);
    49
                tv.append(figlio + "\n"); //visualizziamo i dati
    50
             
    51
                sottoTesti = new String[] {"Sub", "Sub"};
    52
                adapter_list = new Adapter_list(this, listp, sottoTesti);
    53
                listView.setAdapter(adapter_list);
    54
    55
            }
    56
    57
    58
    59
        }
    60
    61



    3)adapter
    37
     
    1
    public class Adapter_list extends ArrayAdapter<String> {
    2
        ArrayList<String> listp;
    3
        String[] sottoTesto;
    4
        Context context;
    5
        Holder holder;
    6
    7
        public Adapter_list(Context context, ArrayList<String> listp, String[] sottoTesto) {
    8
            super(context, R.layout.row_salsicce);
    9
            // TODO Auto-generated constructor stub
    10
            this.listp = listp;
    11
            this.sottoTesto = sottoTesto;
    12
            this.context = context;
    13
        }
    14
    15
        public View getView(int position, View view, ViewGroup parent) {
    16
            if(view == null) {
    17
                holder = new Holder();
    18
                LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    19
                view = inflater.inflate(R.layout.row_salsicce, null, true);
    20
                holder.textView = (TextView)view.findViewById(R.id.textViewList);
    21
                holder.textView2 = (TextView)view.findViewById(R.id.textViewnum);
    22
                holder.textView.setText(listp.get(position));
    23
                holder.textView2.setText(sottoTesto[position]);
    24
                view.setTag(holder);
    25
            }
    26
            else {
    27
                holder = (Holder)view.getTag();
    28
            }
    29
            return view;
    30
        }
    31
    32
    33
    }
    34
    35
    class Holder {
    36
        TextView textView, textView2;
    37
    }


    ho sbagliato a scrivere l'adapter?

    4)riga con due textview
    27
     
    1
    <TextView
    2
            android:id="@+id/textViewList"
    3
            android:background="@drawable/color_list"
    4
            android:layout_width="wrap_content"
    5
            android:layout_height="wrap_content"
    6
            android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
    7
            android:textSize="18sp"
    8
            android:hint="nome_ingrediente"
    9
            android:textStyle="bold"
    10
            android:textColor="#ffffff"
    11
            android:layout_centerVertical="true"
    12
            android:layout_alignParentLeft="true"
    13
            android:layout_alignParentStart="true" />
    14
    15
        <TextView
    16
            android:id="@+id/textViewnum"
    17
            android:background="@drawable/color_list"
    18
            android:layout_width="wrap_content"
    19
            android:layout_height="wrap_content"
    20
            android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
    21
            android:textSize="18sp"
    22
            android:hint="numero"
    23
            android:textStyle="bold"
    24
            android:textColor="#ffffff"
    25
            android:layout_alignParentTop="true"
    26
            android:layout_toEndOf="@+id/textViewList"
    27
            android:layout_alignParentStart="false" />

Pagina 2 di 2 primaprima 12

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