问题描述
我使用 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 (将#修改为@)