如何解决在groupie adapter recyclerview android中显示所选项目?
我使用 groupie 作为我的 recyclerview 的适配器。 [Groupie Adapter][1]
class WidgetCarousel(private val adapter: GroupieAdapter) : BindableItem<ItemCarouselBinding>() {
override fun initializeViewBinding(view: View): ItemCarouselBinding =
ItemCarouselBinding.bind(view)
override fun createViewHolder(itemView: View): GroupieViewHolder<ItemCarouselBinding> =
super.createViewHolder(itemView).also {
it.binding.recyclerView.apply {
layoutManager =
linearlayoutmanager(this.context,linearlayoutmanager.HORIZONTAL,false)
}
}
override fun bind(viewBinding: ItemCarouselBinding,position: Int) {
viewBinding.recyclerView.adapter = adapter
}
override fun getLayout(): Int = R.layout.item_carousel
}
这是我用于水平回收视图的项目
class WidgetStoryItem(val widgetData: WidgetData?) :
BindableItem<ItemStoryBinding?>() {
var selectedWidgetId: String? = null
override fun getLayout(): Int = R.layout.item_story
override fun initializeViewBinding(view: View): ItemStoryBinding =
ItemStoryBinding.bind(view)
override fun bind(viewBinding: ItemStoryBinding,position: Int) {
viewBinding.storyTitle.text = widgetData?.body?.title?.replace(" ","\n")
viewBinding.storyImg.load(widgetData?.body?.iconUrl)
selectedWidgetId?.let {
if (it == widgetData?.id)
viewBinding.storyImgBg.background =
ContextCompat.getDrawable(
viewBinding.storyImgBg.context,R.drawable.bg_selected_story_oval_blue
)
else
viewBinding.storyImgBg.setBackgroundResource(0)
}
}
}
var storyAdapter = GroupieAdapter()
storyAdapter.addAll(storyGroup)
val widgetCarousel: WidgetCarousel = WidgetCarousel(storyAdapter)
groupAdapter.add(0,widgetCarousel)
点击的项目是
private val onItemClickListener = OnItemClickListener { item,_ ->
if (item is WidgetStoryItem) {
item.widgetData?.let {
item.selectedWidgetId=it.id
storyAdapter.notifyDataSetChanged()
}
}
我想在用户单击它时显示用户选择的视图,并将其他视图保持为未选择状态。 对我来说,选择发生了,但它无法从其他项目视图中删除选择。 有什么建议么? [1]:https://github.com/lisawray/groupie
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。