Android Arsenal – Recycler-Ansichten

Hallo! bdapter ist für Entwickler gemacht, die es leid sind zu programmieren RecyclerView.Adapter ich RecyclerView.ViewHolder.

Mit bdapter Sie können verwenden RecyclerView ohne Umsetzung RecyclerView.Adapter ich RecyclerView.ViewHolder mehr, auch mehrere viewHolder funktionieren gut.

ich, bdapter unterstützt DataBinding ich 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"
}

Modell

MeinModell.kt

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

Hinzufügen @Keep ich @bdapterViewHolder Notizen in Ihrer Modellklasse. Wenn Sie die ProGuard-Regel verwenden, @Keep kann ausgelassen werden.

Ansichtshalter – Zeitplan

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

Allgemein geschrieben DataBinding Stil.

siehe Modell

MyViewModel.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
}

Erstellen items Dies ist die Quelle von RecyclerView.

bdapter aktualisiert RecyclerView, wenn es sich um einen Wert handelt items geändert. 👏

Aktivität – Aussehen

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

Allgemein geschrieben DataBinding Stil. Stellen Sie ein viewModel.items zu binding:bdapterItems ich viewModel zu binding:bdapterViewModel.

Aktivität

MeineAktivität.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)
        }
    }
}

Allgemein geschrieben DataBinding Stil.

vollständig!

Du hast es benutzt RecyclerView ohne Umsetzung RecyclerView.Adater ich RecyclerView.ViewHolder durch bdapter.

  • Ist mehr ViewHolder möglich? -> JA
  • Erforderlicher Code für RecyclerView.ViewHolder Klasse? -> NEIN
  • Erforderlicher Code für RecyclerView.Adapter Klasse? -> NEIN
  • Kein Bedarf für RecyclerView.Adapter Logik? Wie Hinzufügen, Bearbeiten, Löschen, Sortieren, Ausblenden usw. für Artikel. -> NEIN, nur Artikel in ViewMoles verwalten
  • Kann ich meine eigene verwenden DiffUtil? -> Sehen Sie sich UNBEDINGT ein Projektbeispiel an
  • Kann ich den Namen der bei der Datenbindung verwendeten Variablen ändern? -> Sehen Sie sich UNBEDINGT ein Projektbeispiel an

Apache-Lizenz 2.0