CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

[Medio] RecyclerView, viewholder e adapters

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

    [Medio] RecyclerView, viewholder e adapters

    Tra le nuove API Lollipop e anche nell'ultima versione della support library è disponibile questa view, altamente personalizzabile e che va oltre il semplice concetto di ListView o GridView.
    RecyclerView permette infatti di ottenere praticamente tutte le configurazioni che desideriamo estendendo alcune classi.

    Qui sotto un esempio di implementazione.

    build.gradle

    i

    Queste due librerie vi permetteranno di utilizzare, come ovvio, le nuove API anche su dispositivi pre-lollipop



    fragment_main.xml

    i

    Un semplice layout contenente solo la nostra RecyclerView



    MyFragment.java

    i

    Non implemento tutto il codice relativo al fragment ma solo la parte che ci interessa per la configurazione iniziale della RecyclerView.
    In questo caso specifico io vario la visualizzazione degli elementi in base all'orientazione del dispositivo.
    La RecyclerView fondamentalmente si basa sull'utilizzo di LayoutManagers, per appunto, gestire la visualizzazione degli elementi.
    In questo caso utilizzo un GridLayoutManager, definendo nel costruttore quante colonne dovrà avere la nostra RecyclerView(2);
    Lo step successivo è definire lo SpanSizeLookup, una classe che andremo ad estendere e che sarà necessaria per stabilire quante colonne dovrà occupare la singola riga della lista (in questo caso 1 o 2) [vedi sotto]




    GridSpanSizeLookup.java

    i

    Volendo cambiare il tipo di visualizzazione in base al cambio di orientazione del dispositivo, nel costruttore della classe passo anche la configurazione del dispositivo e tramite un case statement ritorno il numero di colonne che il singolo elemento deve occupare.



    MyViewHolder.java

    i

    Questa classe funziona quasi esattamente come quella che fino ad ora avevamo utilizzato nelle classiche ListView e GridView per questioni di performance.



    MyAdapter.java

    i

    Il nostro adapter ora dovrà estendere RecyclerView.Adapter<T>. Il funzionamento è fondamentalmente il medesimo degli altri adapter (Es: BaseAdapter)



    MyFragment.java

    i

    Il modo di impostazione dell'adapter non cambia.



    Buon coding
    Ultima modifica di cesco; 23-11-14 alle 20:06
    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

  2. I seguenti 2 Utenti hanno ringraziato cesco per il post:

    Andrea (24-11-14),lords91 (07-09-15)

  3.  
  4. #2
    Baby Droid


    Registrato dal
    Apr 2015
    Messaggi
    2

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Mi scuso se non é il posto giusto per chiedere, ma volevo togliermi dei dubbi. In passato ho cercato di realizzare gallerie di immagini con la gridview, non senza diverse difficoltà, e senza ottenere spesso i risultati desiderati. Mi confermate che nell'ottica di un restyle delle suddette conviene puntare sulla RecyclerView? E che grazie le support library non dovrebbero esserci problemi d'incompatibilità all'indietro?
    Grazie!

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