Autore Topic: ListView  (Letto 1177 volte)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
ListView
« il: 01 Febbraio 2011, 03:55:11 CET »
0
Vorrei visualizzare dei dati in una listview suddivisa in gruppi e sottogruppi cliccabili....mi spiego meglio :
Tramite una query leggo i dati che vengono viusalizzati in una listview :
-----------------
FRUTTA       >
-----------------
DOLCI        >
-----------------
PASTA        >
-----------------
etc

ogni elemento di questa lista cliccato dovrà espandersi per visualizzare il suo contenuto ad esempio :

-----------------
FRUTTA      V
mele
pere
banane
-----------------
DOLCI       V
torta di mele
tiramisù
-----------------
PASTA      V
pasta al forno
-----------------

il problema è che ogni gruppo ha sotto un certo numero di elementi variabile (nell'esempio FRUTTA ha sotto 3 elementi, PASTA ha sotto 1 elemento) ed ogniuno di questi elementi poi deve essere cliccabile in modo da far partire un'activity.

Che tipo di adapter devo utilizzare per fare questo ? ho letto questo topic cambiare layout listview - Android Developers Italia e sembra proprio fare al caso mio che dite ?

però non ho capito come passargli i dati.... perchè posso memorizzare i dati relativi ai gruppi (FRUTTA,DOLCI,PASTA) in un'array da passare al SimpleCursorAdapter e fino qui tutto ok......ma poi pur memorizzando i sottogruppi in un altro array come faccio a dirgli che mele,pere e banane vanno sotto FRUTTA e torta di mele e tiramisù vanno sotto DOLCI, etc considerando oltretutto che il loro numero è variabile quindi dovrei tipo contarli e poi aggiugere le relative textview da codice....

spero di essermi spiegato, grazie :)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ListView
« Risposta #1 il: 01 Febbraio 2011, 10:19:04 CET »
0
Troppo complicato ? :(

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:ListView
« Risposta #2 il: 01 Febbraio 2011, 10:46:18 CET »
0
Proprio nel link che hai postato tu c'è tutto, per questo probabilmente nessuno ti risponde... ti sei già risposto da solo.

In ogni caso, ti aggiungo altri link:
ExpandableList1.java | Android Developers
ExpandableList2.java | Android Developers
ExpandableList3.java | Android Developers

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ListView
« Risposta #3 il: 01 Febbraio 2011, 13:54:24 CET »
0
Grazie Marco, in effetti i link che mi hai postato fanno proprio al caso mio anche se mi sarebbe piaciuto utilizzare il codice della listview presente nel topic che avevo messo così avevo anche la possibilità di personalizzare...

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:ListView
« Risposta #4 il: 01 Febbraio 2011, 14:06:45 CET »
0
Non capisco.

Quale codice della listview hai messo e in quale topic?

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ListView
« Risposta #5 il: 01 Febbraio 2011, 14:36:59 CET »
0
Volevo usare questo codice cambiare layout listview - Android Developers Italia e non l'ExpandableListAdapter

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:ListView
« Risposta #6 il: 02 Febbraio 2011, 13:29:11 CET »
0
Guardando l'esempio 2 postato da MarcoDuff ho rinnovato il codice alle API attuali però c'è qualcosa che non va in quanto quando apro il dettaglio di un contatto, oltre a comparire i suoi numeri di telefono compare anche il nome....non riesco a capire dove sbaglio! ecco il codice :
Codice (Java): [Seleziona]
   private int mGroupIdColumnIndex;
   
    private String mPhoneNumberProjection[] = new String[] {
                ContactsContract.CommonDataKinds.Phone.NUMBER
    };

   
    private ExpandableListAdapter mAdapter;
   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Query for people
        Cursor groupCursor = managedQuery(ContactsContract.Contacts.CONTENT_URI,
                                        new String[] {ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME},
                                                null,
                                                null,
                                                null);

        // Cache the ID column index
        mGroupIdColumnIndex = groupCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID);

        // Set up our adapter
        mAdapter = new MyExpandableListAdapter(groupCursor,
                this,
                android.R.layout.simple_expandable_list_item_1,
                android.R.layout.simple_expandable_list_item_1,
                new String[] {ContactsContract.Contacts.DISPLAY_NAME}, // Name for group layouts
                new int[] {android.R.id.text1},
                new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER}, // Number for child layouts
                new int[] {android.R.id.text1}){

                                        @Override
                                        public View getChildView(int groupPosition,int childPosition, boolean isLastChild,View convertView, ViewGroup parent) {
                                                // TODO Auto-generated method stub
                                                return super.getChildView(groupPosition, childPosition, isLastChild,convertView, parent);
                                        }      
        };
       
                        setListAdapter(mAdapter);
    }

    public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {

         public MyExpandableListAdapter(Cursor cursor, Context context, int groupLayout,
                 int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
                 int[] childrenTo) {
                  super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childrenFrom,childrenTo);
         }

        @Override
        protected Cursor getChildrenCursor(Cursor groupCursor) {
            // Given the group, we return a cursor for all the children within that group

            // Return a cursor that points to this contact's phone numbers
            Uri.Builder builder = ContactsContract.Contacts.CONTENT_URI.buildUpon();
            ContentUris.appendId(builder, groupCursor.getLong(mGroupIdColumnIndex));
            builder.appendEncodedPath(ContactsContract.Contacts.Data.CONTENT_DIRECTORY);
            Uri phoneNumbersUri = builder.build();

            // The returned Cursor MUST be managed by us, so we use Activity's helper
            // functionality to manage it for us.
            return managedQuery(phoneNumbersUri, mPhoneNumberProjection, null, null, null);
        }
       
    }
}

Avete idea di dove può essere l'errore?

MA POI SCUSATE PERCHE' SULL'EMULATORE 2.2 min SDK 8 mi funziona lo stesso l'esempio contenuto nelle APIDEMOS in Views Expandable Lists2 ?? se contiene delle content deprecati quali contact.People e Phone ???