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