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 muchosviewTypes
].
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.
.