CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: complicazio con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 11 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

Lista di elementi che aumenta di uno ad ogni click di un tasto

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
    Baby Droid


    Registrato dal
    Dec 2011
    Messaggi
    15

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Lista di elementi che aumenta di uno ad ogni click di un tasto

    Ciao a tutti,
    posto anche qui quanto messo in https://www.androidiani.com/forum/le...ml#post1256521 (per i moderatori: magari cancellate/spostate il precedente messaggio se è di troppo)

    dicevo,
    sto sviluppando -o meglio sto cercando di sviluppare- una app per il mio sonic, e come da oggeto mi trovo di fronte al seguente problema:

    Ho un layout in xml con un tasto aggiungi, alla pressione del quale vorrei che comparisse un ulteriore TableLayout con vari widget. Chiaramente ad ogni pressione del tasto deve comparire un' altro TableLayout.

    Non conoscendo a priori quanti TableLayout si aggiungeranno non posso usare la proprietà visibility per nasconderli in attesa della pressione del tasto.
    Pensavo di realizzare il tutto con un adapter ma ho un pò di confusione in testa, qualcuno può darmi una mano per favore?

    Grazie mille in anticipo a chi sa e non tace!


    Piero

  2.  
  3. #2
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da piero19 Visualizza il messaggio
    Ciao a tutti,
    posto anche qui quanto messo in https://www.androidiani.com/forum/le...ml#post1256521 (per i moderatori: magari cancellate/spostate il precedente messaggio se è di troppo)

    dicevo,
    sto sviluppando -o meglio sto cercando di sviluppare- una app per il mio sonic, e come da oggeto mi trovo di fronte al seguente problema:

    Ho un layout in xml con un tasto aggiungi, alla pressione del quale vorrei che comparisse un ulteriore TableLayout con vari widget. Chiaramente ad ogni pressione del tasto deve comparire un' altro TableLayout.

    Non conoscendo a priori quanti TableLayout si aggiungeranno non posso usare la proprietà visibility per nasconderli in attesa della pressione del tasto.
    Pensavo di realizzare il tutto con un adapter ma ho un pò di confusione in testa, qualcuno può darmi una mano per favore?

    Grazie mille in anticipo a chi sa e non tace!


    Piero
    Ciao Piero,

    non ho ben capito la situazione iniziale.
    Allora tu hai un linearlayout principale che viene visualizzato dalla activity principale, dove è presente un tasto che alla pressione dovrebbe far 'comparire' nel layout principale un table layout. Cosa intendi che 'ad ogni pressione del tasto' deve far comparire un altro tablelayout? Intendi aggiungere una riga alla table o proprio un nuovo table layout che soppianti il precedente ?
    Potresti meglio dettagliare, anche con un esempio, qual'è deve essere il goal?
    Thank u
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  4. #3
    Baby Droid


    Registrato dal
    Dec 2011
    Messaggi
    15

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da frank17next Visualizza il messaggio
    Ciao Piero,

    non ho ben capito la situazione iniziale.
    Allora tu hai un linearlayout principale che viene visualizzato dalla activity principale, dove è presente un tasto che alla pressione dovrebbe far 'comparire' nel layout principale un table layout. Cosa intendi che 'ad ogni pressione del tasto' deve far comparire un altro tablelayout? Intendi aggiungere una riga alla table o proprio un nuovo table layout che soppianti il precedente ?
    Potresti meglio dettagliare, anche con un esempio, qual'è deve essere il goal?
    Thank u
    Grazie a te!

    Dunque, l'idea era appunto quella di avere un tasto fisso che aggiungesse ad ogni click un nuovo tablelayout alla lista, agguingendolo a quelli che c'erano già. In pratica in un file layout_riga.xml va definito il tablelayout di ogni riga della listview, quindi ad ogni touch su aggiungi la lista aumentavo di un tablelayout. In ogni caso ciò non è fattibile per il fatto che la listview non può gestire le tabelle, quindi ho tolto il tablelayout lasciando un semplice layout lineare. Ho capito come fare grazie a questo: [medio] ListView con layout personalizzato tramite un SimpleAdapter - Android Developers Italia , ma ho avuto ancora problemi perché avevo bisogno di mettere la listview all'interno di una scrollview.

  5. #4
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da piero19 Visualizza il messaggio
    Grazie a te!

    Dunque, l'idea era appunto quella di avere un tasto fisso che aggiungesse ad ogni click un nuovo tablelayout alla lista, agguingendolo a quelli che c'erano già. In pratica in un file layout_riga.xml va definito il tablelayout di ogni riga della listview, quindi ad ogni touch su aggiungi la lista aumentavo di un tablelayout. In ogni caso ciò non è fattibile per il fatto che la listview non può gestire le tabelle, quindi ho tolto il tablelayout lasciando un semplice layout lineare. Ho capito come fare grazie a questo: [medio] ListView con layout personalizzato tramite un SimpleAdapter - Android Developers Italia , ma ho avuto ancora problemi perché avevo bisogno di mettere la listview all'interno di una scrollview.
    Ok,
    per aggiungere una listview in una scrollview è sufficiente annidare l'oggetto che deve scrollare (la listview) all'interno di una scrollview, come in questo esempio:

    codice:
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
           
            <TextView
                android:id="@+id/textView1"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:text="@string/stringaTextView" />
    
        </LinearLayout>
    </ScrollView>
    in questo caso ogni riga della listview è un textview ed è scrollable
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  6. #5
    Baby Droid


    Registrato dal
    Dec 2011
    Messaggi
    15

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da frank17next Visualizza il messaggio
    Ok,
    per aggiungere una listview in una scrollview è sufficiente annidare l'oggetto che deve scrollare (la listview) all'interno di una scrollview, come in questo esempio:

    codice:
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
           
            <TextView
                android:id="@+id/textView1"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:text="@string/stringaTextView" />
    
        </LinearLayout>
    </ScrollView>
    in questo caso ogni riga della listview è un textview ed è scrollable

    Non ho capito, io alla fine facevo così:

    codice:
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
        
        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
                
                 <ListView 
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent" / >
    
       </LinearLayout>
    
    </ScrollView>
    E popolavo la ListView con un adapter, ma c'erano dei problemi di layout, la scrollview "scrollava" ma la lista, anche con 10 elementi, non si espandeva e si vedevano al massimo 2 textview.

  7. #6
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Mmm...
    allora, -nel mio caso- io popolo una listview, che è scrollable perchè annidata in una scrollview (nel layout associato alla activity che contiene la listview (nel metodo setContentView)), da una query sul mio db sqlite, attraverso l'utilizzo di un Cursor (che cattura il risultato di una SELECT), e un SimpleCursorAdpater, che popola la listview con due campi a mia scelta di ogni record contenuto ormai nel cursor:

    codice:
    private ListView listaChiamate;
    [...]
    miodb = new SQLiteAdapter(this.getApplicationContext()); //qui istanzio la connessione al db
    miodb.openToRead(); //qui apro il db in sola lettura
    Cursor cursor = miodb.selectAllChiamate(); //qui eseguo una select su una tabella del db, il risultato viene memorizzato in un Cursor
    startManagingCursor(cursor);
    String[] from = new String[]{"CodiceChiamata", "DataApertura"};
    int[] to = new int[]{R.id.rowCodiceChiamata, R.id.rowDataApertura}; //vedi row.xml
    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this.getApplicationContext(), R.layout.row, cursor, from, to);
    listaChiamate = (ListView) findViewById(R.id.listaChiamate);
    listaChiamate.setAdapter(cursorAdapter);
    miodb.close();
    questo layout rappresenta ogni singola riga della ListView:

    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LinearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    
        <TextView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/rowCodiceChiamata"
            android:layout_width="163dp"
            android:layout_height="65dp"
            android:background="#545454"
            android:padding="10dip"
            android:text="@string/textCodiceChiamata"
            android:textColor="#FFFFFF"
            android:textSize="15dp"
            android:textStyle="bold" />
    
        <TextView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/rowDataApertura"
            android:layout_width="156dp"
            android:layout_height="fill_parent"
            android:padding="10dip"
            android:text="@string/textDataApertura"
            android:background="#545454"  />
    
    </LinearLayout>
    
    </LinearLayout>
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  8. #7
    Baby Droid


    Registrato dal
    Dec 2011
    Messaggi
    15

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da frank17next Visualizza il messaggio
    Mmm...
    allora, -nel mio caso- io popolo una listview, che è scrollable perchè annidata in una scrollview (nel layout associato alla activity che contiene la listview (nel metodo setContentView)), da una query sul mio db sqlite, attraverso l'utilizzo di un Cursor (che cattura il risultato di una SELECT), e un SimpleCursorAdpater, che popola la listview con due campi a mia scelta di ogni record contenuto ormai nel cursor:

    codice:
    private ListView listaChiamate;
    [...]
    miodb = new SQLiteAdapter(this.getApplicationContext()); //qui istanzio la connessione al db
    miodb.openToRead(); //qui apro il db in sola lettura
    Cursor cursor = miodb.selectAllChiamate(); //qui eseguo una select su una tabella del db, il risultato viene memorizzato in un Cursor
    startManagingCursor(cursor);
    String[] from = new String[]{"CodiceChiamata", "DataApertura"};
    int[] to = new int[]{R.id.rowCodiceChiamata, R.id.rowDataApertura}; //vedi row.xml
    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this.getApplicationContext(), R.layout.row, cursor, from, to);
    listaChiamate = (ListView) findViewById(R.id.listaChiamate);
    listaChiamate.setAdapter(cursorAdapter);
    miodb.close();
    questo layout rappresenta ogni singola riga della ListView:

    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LinearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    
        <TextView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/rowCodiceChiamata"
            android:layout_width="163dp"
            android:layout_height="65dp"
            android:background="#545454"
            android:padding="10dip"
            android:text="@string/textCodiceChiamata"
            android:textColor="#FFFFFF"
            android:textSize="15dp"
            android:textStyle="bold" />
    
        <TextView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/rowDataApertura"
            android:layout_width="156dp"
            android:layout_height="fill_parent"
            android:padding="10dip"
            android:text="@string/textDataApertura"
            android:background="#545454"  />
    
    </LinearLayout>
    
    </LinearLayout>
    Si ma io metto una listview dentro una scrollview

    <ScrollView ...>
    <ListView ...> </ListView>
    </ScrollView>

    Che mi risulta "zippata", passami il termine. Se ci sono tanti elementi la ListView non appare tutta intera, infatti sono visibili solo i primi elementi. Comunque ho mezzo risolto grazie a questo: Ore Ni Makasero: Android: put ListView in a ScrollView


  9. #8
    Baby Droid


    Registrato dal
    Dec 2011
    Messaggi
    15

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ok, alla fine sono riuscito a risolvere tutto (più o meno). Se servisse a qualcuno ho fatto così:

    -Ho inserito la ListView dentro una ScrollView nel main.xml
    -Ho popolato la ListView dall'activity principale grazie ad un'adapter, che prende gli elementi da un'array statico (dichiarato qundi a livello di classe ).
    -Grazie al citato link put ListView in a ScrollView l' altezza del lista viene modificata in base agli elementi che contiene
    -Quando viene premuto il pulsante aggiungi l'array viene modificato aggiungendo il nuovo elemento e la lista viene ricreata sulla base dell'array, uin modo da inserire anche il nuovo oggetto.

    frank17next grazie per l'aiuto ^_^

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