如何解决如何显示在回收站视图中选中的总复选框
我正在尝试创建一个简单的 pokedex,您可以在其中跟踪您收集了多少 pokemon。我遇到的问题是回收站视图中的复选框。我想要当前为零的总数,选中每个复选框。如果取消选中,数字将下降。总数仅显示在文本视图中。
这是我的代码
适配器类
class MainAdapter(val pokeList : List<PokeData>) : RecyclerView.Adapter<MainAdapter.ViewHolder>() {
var totalCollectedPokemon = 0
override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): MainAdapter.ViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val view = layoutInflater
.inflate(R.layout.poke_contents,parent,false)
return ViewHolder(view)
}
override fun getItemCount(): Int = pokeList.size
override fun onBindViewHolder(holder: MainAdapter.ViewHolder,position: Int) {
val pokeDetails = pokeList[position]
holder.checkBox.setonClickListener {
if(holder.checkBox.isChecked) {
totalCollectedPokemon = totalCollectedPokemon + 1
} else {
totalCollectedPokemon = totalCollectedPokemon - 1
}
}
holder.bind(pokeDetails)
}
inner class ViewHolder(val v: View) : RecyclerView.ViewHolder(v) {
val pokemonImage = v.findViewById<ImageView>(R.id.pokemon_image)
val pokemonName = v.findViewById<TextView>(R.id.pokemon_name)
val collectedPokemon = v.findViewById<TextView>(R.id.total_collected_pokemon)
val checkBox = v.findViewById<CheckBox>(R.id.checkBox)
fun bind(info:PokeData) {
pokemonName.text = info.pokemonName
val imageRes = v.context.resources.getIdentifier("${info.pokemonImage}","drawable",v.context.packageName)
pokemonImage.setimageResource(imageRes)
}
}
}
我的数据类
data class PokeData(val pokemonName : String,val pokemonImage: String) {
}
解决方法
您可以在 onClick 侦听器中调用 lambda 函数来更新视图中的计数。
适配器构造函数可以像这样改变:
class MainAdapter(val pokeList : List<PokeData>,val onCheckChanged: (selected: Int,total: Int) -> Unit)
并将 onClick 侦听器修改为如下所示:
holder.checkbox.setOnClickListener {
if(holder.checkbox.isChecked) {
totalCollectedPokemon = totalCollectedPokemon + 1
} else {
totalCollectedPokemon = totalCollectedPokemon - 1
}
onCheckChanged(totalCollectedPokemon,list.size)
}
在您的片段/活动中,当您初始化适配器时,您可以处理此 lambda 函数以更新文本视图。
,您需要维护一个整数来保存所选卡片(或复选框)的数量。然后实现一个接口,然后点击复选框作为所选卡片的参数计数和列表大小传递。
holder.checkbox.setOnClickListener {
if(holder.checkbox.isChecked) {
totalCollectedPokemon = totalCollectedPokemon + 1
} else {
totalCollectedPokemon = totalCollectedPokemon - 1
}
yourInterface.something(selectedCount,list.size)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。