我是 Epoxy Recyclerview 的新手。我的查询如下。
- 我使用 kotlin 数据绑定在 recyclerview 中添加了很多项目,包括横幅、标题、网格、产品轮播。
- 我有一个按钮,可以在愿望清单中添加产品并更改视图颜色。此功能运行良好。
- 我想要的不是将 recyclerview 滚动到顶部并重置所有视图。就像我将轮播中的第 4 个产品标记为 inWishlist 一样,recyclerview 不得滚动到顶部并且轮播不得重置。
谁能帮助我实现这一目标?
这是代码 这是 HomeData 类。
data class HomeData(val listBanners : ArrayList<String> = arrayListOf("banner1", "banner2", "banner3"),
val listOutCategories : ArrayList<String> = arrayListOf("1", "2", "3", "4", "5", "6", "7", "8"),
val listSaleProducts : ArrayList<Product> = arrayListOf(
Product(id=0, price = "$10.90"),
Product(id=1, price = "$11.90"),
Product(id=2, price = "$12.90"),
Product(id=3, price = "$13.90"),
Product(id=4, price = "$14.90"),
Product(id=5, price = "$105.90"),
Product(id=6, price = "$17.90"),
Product(id=7, price = "$18.90")
))
data class Product(val id:Int = 0, val name:String = "Product", val price:String="12.90", var inWishlist:Boolean = false)
这是调用来设置数据的函数。
fun setRecyclerView(data:HomeData, isLoading : Boolean){
binding.recyclerView.clear()
binding.recyclerView.withModels {
if(isLoading){
loadList {
id("loading")
mainViewModel(mainActivityViewModel)
spanSizeOverride { totalSpanCount, position, itemCount -> 1 }
}
}else{
carousel {
id("top-banners")
withModelsFrom(data.listBanners){
TopBannerBindingModel_().id(it)
}
}
title {
id("out_categories_title")
title("The Out Categories")
}
grid {
id("out_cat_group")
onBind { model, view, position ->
(view.dataBinding as ItemGridBinding).recyclerViewGrid.withModels {
data.listOutCategories.forEachIndexed { index, s ->
outCategory {
id("$index-$s")
}
}
}
}
}
title {
id("on_sale_title")
title("On Sale")
}
carousel {
id("on_sale_products")
withModelsFrom(data.listSaleProducts){
ProductBindingModel_()
.id(it.id)
.product(it)
.clickListener { model, parentView, clickedView, position ->
data.listSaleProducts[position].inWishlist = true
setRecyclerView(data, false)
}
}
}
}
}
}