Arsenal Android – Vistas del reciclador

Kiel

Kiel es un RecyclerView.Adapter con un DSL Kotlin minimalista y asequible que proporciona una utilidad superior a la normal de Android RecyclerView.Adapter .

:

  • Nos encontramos repitiendo los mismos códigos que la placa de la caldera para RecyclerView.Adapter .
  • Tenemos dificultades para administrar RecyclerView.Adapter cuando hay muchos viewTypes ].

Pero ahora Kiel puede ayudarnos a deshacernos de estos problemas.

Uso:

Uso básico:

   val  recyclerViewAdapter  =  adapterOf  <  Text >  {
                Registrarse {
                    tipo { Texto  ::  clase  .java}
                    layoutResource { R  .layout.adapter_message_text_item}
                    viewHolder {::  TextMessageViewHolder }
                    onViewHolderCreated  <  TextMessageViewHolder >  {vh  - > 
                         //  puede administrar su escucha de clics 
                       vh.itemView.setOnClickListener {

                       }
                    }
                    onViewHolderBound  <  Texto   TextMessageViewHolder >  {vh, _, it  - > 
                        vh.messageText.text  =  it.text
                        vh.sentAt.text  =  it.sentAt
                    }
                }
     }

 recyclerView.adapter  =  recyclerViewAdapter 

Diferentes tipos de vistas:

Puede registrar varios ViewHolder s.

   val  recyclerViewAdapter    <  MessageViewState >  {
                Registrarse {
                    tipo { Texto  ::  clase  .java}
                    layoutResource { R  .layout.adapter_message_text_item}
                    viewHolder {::  TextMessageViewHolder }
                    onViewHolderBound  <  Texto   TextMessageViewHolder >  {vh, _, it  - > 
                        vh.messageText.text  =  it.text
                        vh.sentAt.text  =  it.sentAt
                    }
                }

                Registrarse {
                    tipo { Imagen  ::  clase  .java}
                    layoutResource { R  .layout.adapter_message_image_item}
                    viewHolder {::  ImageMessageViewHolder }
                    onViewHolderBound  <  Imagen   ImageMessageViewHolder >  {vh, _, elemento  - > 
                        vh.messageText.text  =  item.text
                        vh.sentAt.text  =  item.sentAt

                         Deslizamiento .  con  (vh.messageImage)
                            .load (item.imageUrl)
                            .into (vh.messageImage)
                    }
                }
 }


recyclerView.adapter  =  recyclerViewAdapter 

Eventos de administración:

Como ViewHolder es accesible en:

  • [1945900 [1945
  • onViewHolderBoundWithPayload

Puede manejar eventos de la misma manera que antes.

   val  recyclerViewAdapter  = 1999020 <  Texto >  {
                Registrarse {
                    tipo { Texto  ::  clase  .java}
                    layoutResource { R  .layout.adapter_message_text_item}
                    viewHolder {::  TextMessageViewHolder }
                    onViewHolderCreated  <  TextMessageViewHolder >  {vh  - > 
                       vh.itemView.setOnClickListener {

                       }
                       vh.messageText.addTextChangedListener {texto  - > 

                       }
                    }
                    onViewHolderBound  <  Texto   TextMessageViewHolder >  {vh, _, it  - > 
                        vh.messageText.text  =  it.text
                        vh.sentAt.text  =  it.sentAt
                    }
                }
 }

recyclerView.adapter  =  recyclerViewAdapter 

DiffUtil:

Puede proporcionar su DiffUtil.ItemCallback extendiendo RecyclerDiffUtil945] [Rec45erDiffUtil945] [recyclerDiffUtil945] [Rec45erDiffUtil945] [recycler = adaptadorDe < MessageViewState > {
diffUtilCallback {oldItems, newItems - > RecyclerDiffUtilCallback (oldItems, newItems)}
Registrarse {
tipo { Texto :: clase .java}
layoutResource { R .layout.adapter_message_text_item}
viewHolder {:: TextMessageViewHolder }
onViewHolderBound < Texto TextMessageViewHolder > {vh, _, it - >
vh.messageText.text = it.text
vh.sentAt.text = it.sentAt
}
}

Descargar

  implementación   & # 39;  me.ibrahimyilmaz: kiel: latestVersion  & # 39;   

Licencia

  Copyright 2020 Ibrahim Yilmaz

Licencia con licencia de Apache, Versión 2.0 (la "Licencia");
no puede usar este archivo excepto de acuerdo con la Licencia.
Puede obtener una copia de la Licencia en la dirección

   http://www.apache.org/licenses/LICENSE-2.0

A menos que lo exija la ley aplicable o se acuerde por escrito, el software
distribuido bajo la Licencia se distribuye "TAL CUAL",
SIN GARANTÍAS O CONDICIONES DE NINGÚN TIPO, explícitas o implícitas.
Consulte la Licencia para ver los permisos específicos del idioma e
limitaciones bajo la Licencia.

.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *