El arsenal de Android – Recycler Views

¡Hola! adaptador está hecho para desarrolladores que están cansados ​​de programar RecyclerView.Adapter Y RecyclerView.ViewHolder.

Con adaptador puedes usar RecyclerView sin implementación de RecyclerView.Adapter Y RecyclerView.ViewHolder además, aún más viewHolder funciona bien.

Y, adaptador apoya DataBinding Y MVVM.

repositories {
    maven { url 'https://jitpack.io' }}
}
dependencies {
    implementation "com.github.quartack.bdapter:bdapter:0.9.3"
    kapt "com.github.quartack.bdapter:generator:0.9.3"
}

plantilla

MiModelo.kt

@Keep
@bdapterViewHolder(
    dataBinding = ViewholderMyModelBinding::class,
    viewModelClass = MyViewModel::class
)
data class MyModel(
    val id: Int
)

Agregar @Keep Y @bdapterViewHolder anotaciones en su clase de modelo. Si está utilizando la regla ProGuard, @Keep puede ser omitido.

ver propietario – diseño

viewholder_mi_modelo.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="item"
            type="com.your.package.MyModel" />
        <variable
            name="viewModel"
            type="com.your.package.MyViewModel" />
    </data>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text='@{item.toString()}' />
</layout>

escrito en general DataBinding estilo.

mira el modelo

MiModeloDeVista.kt

class MyViewModel : ViewModel() {
    private val _items = MutableLiveData<List<Any>>().apply {
        value = listOf(
            MyModel(1), MyModel(2), MyModel(3)
        )
    }
    val items: LiveData<List<Any>>
        get() = _items
}

Crear items será la fuente de RecyclerView.

adaptador actualizará RecyclerView si el valor de items cambió. 👏

actividad – disposición

actividad_principal.xml

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:binding="http://schemas.android.com/apk/res-auto">
    <data>
        <variable
            name="viewModel"
            type="com.quartack.bdapter.sample.viewmodel.MainViewModel" />
    </data>
    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:layoutManager="LinearLayoutManager"
        binding:bdapterItems="@{viewModel.items}"
        binding:bdapterViewModel="@{viewModel}" />
</layout>

escrito en general DataBinding estilo. Establecer un viewModel.items a binding:bdapterItems Y viewModel a binding:bdapterViewModel.

ocupaciones

MiActividad.kt

class MyActivity : AppCompatActivity() {
    private val viewModel by viewModels<MyViewModel>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initDataBinding()
    }

    private fun initDataBinding() {
        ActivityMainBinding.inflate(layoutInflater).also {
            it.viewModel = viewModel
            it.lifecycleOwner = this
            it.lifecycleOwner!!.lifecycle.addObserver(viewModel)
            setContentView(it.root)
        }
    }
}

escrito en general DataBinding estilo.

¡completar!

has usado RecyclerView sin implementar RecyclerView.Adater Y RecyclerView.ViewHolder mediante adaptador.

  • ¿Son posibles múltiples ViewHolder? ->
  • Necesitas código para RecyclerView.ViewHolder ¿Clase? -> NO
  • Necesitas código para RecyclerView.Adapter ¿Clase? -> NO
  • No tienes que RecyclerView.Adapter ¿lógica? Cómo agregar, editar, eliminar, ordenar, ocultar, etc. para elementos. -> NO, solo administra elementos en ViewMoles
  • ¿Puedo usar el mío? DiffUtil? -> SEGURO, echa un vistazo al proyecto de muestra
  • ¿Puedo cambiar el nombre de la variable utilizada en el enlace de datos? -> SEGURO, echa un vistazo al proyecto de muestra

licencia apache 2.0

.

About MiReal

Compruebe también

¡Anuncio de la versión beta de Compose for Wear OS!

Publicado por Ksenia ShumelchykIngeniero de relaciones con desarrolladores y John Nichol, líder técnico de Compose …

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

holiganbet giriş
- elexbet yeni giriş -

bahsegel bahis

- anadolu casino giriş -
betboo giriş
-

Personel Sağlık

- istanbul eskort - izmir eskort - mersin eskort - adana eskort - antalya eskort - eskort mersin - mersin eskort bayan - eskort adana