我需要帮助。
我想改变按钮可见性在任何其他项目内recyclerview消失,所以其他按钮,除了项目,我选择成为不可见...
触发器是当项目被点击/选择,然后任何其他项目的按钮去看不见/去了,除了我点击...我怎么做?我使用Kotlin顺便说一句。
下面是我想在onBindViewHolder的"if(! b)"(如果可能的话)中实现它的地方:
holder.mainLayout.setOnClickListener {
if (!b){
b = true
holder.addsLayout.isVisible = true
} else {
b = false
holder.addsLayout.isVisible = false
}
}
编辑:
这是我的观点:
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
val itemTitle: TextView = itemView.findViewById(R.id.itemTitleRecordLocal)
val itemDelete: Button = itemView.findViewById(R.id.recordlocalDelete)
val itemTranscribe: Button = itemView.findViewById(R.id.transcribelocalTxt)
val mainLayout: RelativeLayout = itemView.findViewById(R.id.recordlocalTitleDateLayout)
val addsLayout: RelativeLayout = itemView.findViewById(R.id.addsRecordLocalLayout)
}
我刚刚更新了我的代码较早,所以它不再是按钮,但布局,但我认为它类似的bcuz我只需要改变可见性。
- itemDelete和itemTranscribe是我想隐藏的按钮,我把它放在addsLayout中。
- mainLayout是我需要单击才能选中的项目。
1条答案
按热度按时间eqqqjvef1#
根据您的代码,我知道您正在将任何数据类传递给类型为suppose
myData
的回收程序视图适配器您可以执行以下操作:
在数据类项中取一个布尔变量,比如
isSelected
,默认值为false。然后每当你点击你的
mainLayout
,改变布尔值。根据该布尔值检查条件并根据该布尔值管理可见性。
另外,最好的做法是在activity/fragment中管理clickevents,所以我的建议是将
mainLayout
的click回调给activity/fragment,然后只在那里执行后续操作。之后,在activity/fragment中,您需要为循环创建for,并为除您选择的数据之外的所有数据创建
isSelected
false。例如,我有一个音乐播放器recyclerview,如果一个正在播放,那么其他所有的都应该暂停,所以我需要根据这个条件来改变图标。我的数据类包含一个变量
isPlaying
。在适配器中:
在点击中,我创建了一个可变的实时数据,并在活动/片段中观察该数据,并在那里获得点击的回调。
内部活动/片段: