Se puede usar una biblioteca súper simple para insertar elementos entre los elementos de RecyclerView.
Repositorio
Agregue esto a su archivo raíz build.gradle
( no ) build.gradle
archivo):
allprojects {
repositorio {
.. .
maven {url " https://jitpack.io " }
}
}
Dependencia
Agregue esto al archivo build.gradle
de su formulario:
dependencias {
.. .
implementación & # 39; com.github.pwnjeswani: SuperAdaper: 0.1 & # 39;
}
}
PASO 2 ->
Queremos tener pancartas publicitarias (o cualquier otra pancarta) en posiciones específicas en el adaptador de usuario,
para esto estamos agregando objetos ficticios (ver clase DummyObject)
que acepta itemViewType y position como parámetros en el constructor
anular diversión createOtherItemList () {
var dummyObject = DummyObject ( 1 1 )
var dummyObject2 = DummyObject ( 1 3 )
Súper .otherViewPositions.add (dummyObject)
Súper .otherViewPositions.add (dummyObject2)
}
PASO 3 ->
Después de agregar los objetos ficticios, debemos reemplazar la función getItemViewType
anular diversión getItemViewType ( posición : Int ) : [
val itemViewType = super .getItemViewType (posición)
devuelve if (itemViewType ! = - 1 ) {
// es un objeto ficticio que luego devuelve el tipo de visualización real
// que se mencionó durante la creación de otra lista de artículos
itemViewType
} más {
// es el elemento de su lista (es decir, elemento de usuario) y luego devuelve el tipo de visualización 0 (posición del usuario)
0
}
}
PASO 4 ->
Aquí está createViewHolder e
Código de la función onBindViewHolder como referencia.
anular diversión onCreateViewHolder ( padre : ViewGroup viewType [196590450101] Int [196590454501]] RecyclerView . ViewHolder {
cuando (viewType) {
0 - > {
val vista = LayoutInflater .from (parent.context) .inflate ( R .layout.user_item_view, parent, ] )
return UserViewHolder (ver)
}
1 - > {
val vista = LayoutInflater .from (parent.context) .inflate ( R .layout.ad_item_view, parent, ] )
return AdViewHolder (ver)
}
}
}
anular diversión onBindViewHolder ( titular : RecyclerView . ViewHolder : 199090] 6590] Int )
cuando (holder.itemViewType) {
0 - > {
val poseedor = titular como UserViewHolder
var usuario = super [19459256]. [19659256]. 19659016] usuario
holderr.tv_user_id.text = user.id.toString ()
holderr.tv_user_name.text = nombre de usuario
holderr.tv_user_phone.text = user.phoneNo.toString ()
}
1 - > {
// escribe tu lógica aquí
}
}
}
PASO 5 -> Use este adaptador en su actividad / fragmento
var userAdapter = UserAdapter ( this )
userAdapter.setUserList (usersList)
var llm = LinearLayoutManager ( this [19654570] RecyclerView . 192790190 ]
rv_useres.layoutManager = llm
rv_useres.adapter = userAdapter
En nuestra empresa, teníamos requisitos frecuentes para insertar elementos en varias listas. Anteriormente estábamos realizando todas las tareas en el adaptador en sí, pero esto se estaba volviendo frustrante y también un código propenso a errores que requiere largas horas para resolverse y este ciclo se repitió cada semana. Para resolver este problema, Mr.CTO Avneesh Kumar ha sembrado la idea de crear SuperAdapter.
Bifurca el repositorio y contribuye utilizando solicitudes de extracción.
Posibles contribuciones, grandes o pequeñas, funcionalidades principales, correcciones de errores, traducciones de idiomas adicionales, pruebas de unidades / integración son bienvenidas y apreciadas, pero serán examinadas y discutidas en detalle.
Copyright 2019 pwnjeswani
Licenciado bajo una licencia Apache, Versión 2.0 (la "Licencia"); no es posible usar este archivo excepto de acuerdo con la Licencia. Se 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 conocer el idioma específico que rige las autorizaciones y limitaciones de la Licencia.
.