gpt4 book ai didi

android - 将回收站 View 中显示的选中复选框的项目保存在列表中

转载 作者:行者123 更新时间:2023-12-05 00:19:00 27 4
gpt4 key购买 nike

我设法在 recycler view 中显示存储在房间数据库中的项目。与 checkboxes我想将选中的项目存储在列表中,将选中的项目存储在我使用的列表中 setOnClickListener在复选框上,如适配器中下面的代码,但是当我单击以显示列表时应用程序停止,或者即使列表显示成功,有时当我单击项目的复选框时它也会停止(有关当我删除监听器列表时的信息显示得很好,我可以点击checkboxes,一切正常,但问题是当我添加监听器来存储选中的项目时)。

    class Adapter (val selectedFluxs : MutableList<Flux>)  : RecyclerView.Adapter<Adapter.VH>(
) {
class VH(itemView: View) : RecyclerView.ViewHolder(itemView){
lateinit var feed : Flux
}
var allFluxs : List<Flux> = listOf()


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
val v = LayoutInflater
.from(parent.getContext())
.inflate(R.layout.item_layout, parent, false)
val holder = VH( v )

v.check.setOnClickListener( ) {
// it as CheckBox
if( v.check.isChecked ){
selectedFluxs.add ( holder.feed )
}else{
selectedFluxs.remove( holder.feed )
}
}
return holder
}

override fun getItemCount(): Int {
return allFluxs.size
}
fun setFlux( allFlux : List<Flux> ) {
this.allFluxs = allFlux
notifyDataSetChanged()
}
override fun onBindViewHolder(holder: VH, position: Int) {
holder.itemView.apply {
Source.text = allFluxs[position].source
Tag.text = allFluxs[position].tag
Url.text = allFluxs[position].adr

check.isChecked =
holder.feed in selectedFluxs
}
}
}








最佳答案

使用ViewHolder 为时尚早实例化 ViewHolder 之前的 View 实例,所以将监听器的代码从 onCreateViewHolder 移动至onBindViewHolder所以,你的类代码应该是:

class Adapter (val selectedFluxs : MutableList<Flux>)  : RecyclerView.Adapter<Adapter.VH>(
) {
class VH(itemView: View) : RecyclerView.ViewHolder(itemView){
lateinit var feed : Flux
}
var allFluxs : List<Flux> = listOf()


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
val v = LayoutInflater
.from(parent.getContext())
.inflate(R.layout.item_layout, parent, false)
val holder = VH( v )

}
return holder
}

override fun getItemCount(): Int {
return allFluxs.size
}
fun setFlux( allFlux : List<Flux> ) {
this.allFluxs = allFlux
notifyDataSetChanged()
}
override fun onBindViewHolder(holder: VH, position: Int) {
holder.itemView.apply {
Source.text = allFluxs[position].source
Tag.text = allFluxs[position].tag
Url.text = allFluxs[position].adr
setBackgroundColor(
if (position % 2 == 0)
Color.argb(30,0,220,0)
else
Color.argb(30,0,0,220)
)
check.isChecked =
holder.feed in selectedFluxs


holder.check.setOnClickListener( ) {
// it as CheckBox
if( v.check.isChecked ){
selectedFluxs.add ( holder.feed )
}else{
selectedFluxs.remove( holder.feed )
}
}
}
}

关于android - 将回收站 View 中显示的选中复选框的项目保存在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65011597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com