Autore Topic: Expandable listview  (Letto 4551 volte)

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Expandable listview
« il: 02 Gennaio 2012, 17:26:29 CET »
0
Salve ragazzi potete darmi qualche esempio o aiuto per realizzare una expandable listeview che preda i dati da un database, e quindi con numero di gruppi non finito ?

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Expandable listview
« Risposta #1 il: 03 Gennaio 2012, 10:53:37 CET »
0
niente ?  :-(

Offline Bito92

  • Utente junior
  • **
  • Post: 51
  • Respect: +7
    • Mostra profilo
Re:Expandable listview
« Risposta #2 il: 03 Gennaio 2012, 18:06:03 CET »
0
Ciao deideidei,
prova a guardare su questo link, qui spiega come popolare una list view.
http://android.devapp.it/t012-%E2%80%93-popolare-listview-con-elementi-prelevati-da-un-database-sqlite-nelle-applicazioni-android

spero che ti aiuti un po questo link  :-)



Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Expandable listview
« Risposta #3 il: 04 Gennaio 2012, 10:20:49 CET »
0
grazie mille, ma non ho bisogno di popolare una list view ma una expandable list view prelevando i dati da un database

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Expandable listview
« Risposta #4 il: 04 Gennaio 2012, 10:33:16 CET »
0
grazie mille, ma non ho bisogno di popolare una list view ma una expandable list view prelevando i dati da un database

Dovresti utilizzare un SimpleCursorTreeAdapter, non c'ho mai lavorato quindi non ho del codice da fornirti.

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Expandable listview
« Risposta #5 il: 04 Gennaio 2012, 14:22:05 CET »
+2
Nessuna posta il codice perchè ce n'e' un bel po.

Comunque a grandi linee devi:

1)Crearti 2 queri esempio (query regione e query città filtrata per regione)Verranno usate per l'associazione
2)Crearti 2 layout(Layout padre che conterrà le regioni e Layout child che conterrà le province associate alla regione selezionata)

Queste sono porzioni di codici:
La classe deve estendere ExpandableListActivity,ecco il codice:
Codice: [Seleziona]
public class DecretiActivity extends ExpandableListActivity
        {
Questo lo metto nell'oncreate dell'activity:
Codice: [Seleziona]
SimpleExpandableListAdapter expListAdapter = new SimpleExpandableListAdapter(
                                        this, createGroupList(), // Creating group List.
                                        R.layout.group_row, // Group item layout XML.
                                        new String[]
                                                { "Group Item" }, // the key of group item.
                                        new int[]
                                                { R.id.row_name }, // ID of each group item.-Data
                                                               // under the key goes into this
                                                               // TextView.
                                        createChildList(), // childData describes second-level
                                                           // entries.
                                        R.layout.child_row, // Layout for sub-level
                                                            // entries(second level).
                                        new String[]
                                                { "Sub Item" }, // Keys in childData maps to
                                                            // display.
                                        new int[]
                                                { R.id.grp_child } // Data under the keys above go
                                                               // into these TextViews.
                                );
                                setListAdapter(expListAdapter); // setting the adapter in the
                                                                // list.

Qui carico una lista(padre) ciclando un cursor:
Codice: [Seleziona]
/* Creating the Hashmap for the row */
                @SuppressWarnings("unchecked")
                private List createGroupList()
                        {

                                // Inizializzo database
                                myDB = new clsDatabase(this);
                                db = myDB.getReadableDatabase();

                                // Inizializzo la classe regione
                                clstblRegione = new clsTblRegione();

                                // Inizializzo cursor
                                Cursor regioni = clstblRegione.Selectd(db);
                                startManagingCursor(regioni);
                                ArrayList result = new ArrayList();

                                // Ora ciclo il cursor

                                while (regioni.moveToNext())
                                        {
                                                HashMap m = new HashMap<String, String>();
                                                m.put("Group Item", regioni.getString(1));
                                                result.add(m);

                                        }
                                Log.i("TAG", "" + result.size());

                                return (List) result;

                        }

Qui carico una lista(figli) ciclando un cursor filtrato:
Codice: [Seleziona]
/* creatin the HashMap for the children */

                @SuppressWarnings("unchecked")
                private List createChildList()
                        {

                                ArrayList result = new ArrayList();
                                for (int i = 1; i < 21; ++i)
                                        { // this -15 is the number of groups(Here it's fifteen)

                                                /*
                                                 * each group need each HashMap-Here for each group we
                                                 * have 3 subgroups
                                                 */
                                                String Codice;
                                                ArrayList secList = new ArrayList();
                                               
                                                // Inizializzo database
                                                myDB = new clsDatabase(this);
                                                db = myDB.getReadableDatabase();

                                                // Inizializzo la classe regione
                                                clstblRegione = new clsTblRegione();
                                                Codice=Integer.toString(i);
                                                // Inizializzo cursor
                                                Cursor regioni = clstblRegione.SelectdByRegione(db,Codice);
                                                startManagingCursor(regioni);
                                               
                                                while (regioni.moveToNext())
                                                        {
                                                                HashMap child = new HashMap<String, String>();
                                                                child.put("Sub Item", regioni.getString(1));
                                                                secList.add(child);

                                                        }

                                                result.add(secList);

                                        }

                                return result;

                        }


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

    <TextView android:id="@+id/row_name"
        android:paddingLeft="50dp"
        android:textSize="20dp"
        android:textColor="@color/Snow"
        android:textStyle="normal"
        android:layout_width="320dp"
        android:layout_marginTop="10dp"
        android:layout_height="wrap_content"/>

</LinearLayout>

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

    <TextView android:id="@+id/grp_child"
        android:paddingLeft="80dp"
        android:focusable="false"
        android:textSize="18dp"
        android:textStyle="normal"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:textColor="@color/Yellow" />

</LinearLayout>

Spero che tutto questo possa aiutarti.
Se hai domande chiedi pure
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Expandable listview
« Risposta #6 il: 04 Gennaio 2012, 16:51:55 CET »
0
Grazie mille per la dritta, ma potresti darmi il link all'intero progetto ? o allegarmelo tu, così capirei meglio il funzionamento ?

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Expandable listview
« Risposta #7 il: 04 Gennaio 2012, 16:54:45 CET »
0
Perdonami,
ma è un progetto che poi pubblicherò sul market a pagamento.
Comunque se riesco ti posto il link dove ho erogato le informazioni.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Expandable listview
« Risposta #8 il: 04 Gennaio 2012, 17:07:43 CET »
0
Scusami non immaginavo, allora aspetto il link,
cmq non capisco cos'è la classe regione clstblRegione se posso inizializzare il database in questa maniera invece di come lo fai tu :
Codice (Java): [Seleziona]
 
MyDatabase db=new MyDatabase(getApplicationContext())        
db.open();

e poi mi daresti più o meno la rawQuery che potrei utilizzare ?

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Expandable listview
« Risposta #9 il: 04 Gennaio 2012, 17:21:54 CET »
0
Allora  clstblRegione è semplicemente una classe dove vado a mappare la tabella regione,conterrà come proprietà i campi della tabella regione e come metodi le varie query.

Con il contest non dovresti avere problemi.

Per quanto riguarda la raw query, ti serve la query vera è propria oppure ti serve la generazione del cursor popolato da una query ?
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Expandable listview
« Risposta #10 il: 04 Gennaio 2012, 17:36:27 CET »
0
la query vera e propria, ed in più se io prima popolavo una lista tramite simplelistadapter e per ogni riga della lista mi partiva un rail menù, potro farlo anche con la expandablelistview ?

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Expandable listview
« Risposta #11 il: 04 Gennaio 2012, 17:45:20 CET »
0
Per quanto riguarda la query dipende cosa devi fare, nel mio caso io ho come query per il padre:
Codice: [Seleziona]
select * from regioni
così vedo tutte le regioni.
Poi per i figli la query viene effettuata per ogni singola riga padre , perciò con un filtro codice regione che è presente nella tabella provincia, questa potrebbe essere una query:
Codice: [Seleziona]
select * from provincia where codiceregione ="01"
chiaro che codiceregione è un parametro da integrare nella query.
Nel codice che ti ho postato hai questo esempio

Non so cosa sia un rail menù  :-(
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Expandable listview
« Risposta #12 il: 04 Gennaio 2012, 17:56:42 CET »
0
è simile ad un menù popup che mi serve per  modificare o cancellare quella voce della lista e quindi del database

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Expandable listview
« Risposta #13 il: 05 Gennaio 2012, 12:53:31 CET »
0
ma dove gli dico l'ID dell'expandablelistview , per pecificare l'uso di una determinata expandablelistview ?

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Expandable listview
« Risposta #14 il: 05 Gennaio 2012, 15:14:46 CET »
+1
Devi crearti anche main.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >


    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Seleziona la regione:"
        android:textAppearance="?android:attr/textAppearanceLarge" />

        <ExpandableListView
                android:id="@+id/android:list"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                />

        <TextView
                android:id="@+id/android:empty"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="No items" />

</LinearLayout>
dove c'è l'oggetto  ExpandableListView

Ricordati che la classe estende ExpandableListView
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .