如何显示在回收站视图中选中的总复选框

如何解决如何显示在回收站视图中选中的总复选框

我正在尝试创建一个简单的 pokedex,您可以在其中跟踪您收集了多少 pokemon。我遇到的问题是回收站视图中的复选框。我想要当前为零的总数,选中每个复选框。如果取消选中,数字将下降。总数仅显示在文本视图中。

下面的图片显示了我要解释的内容,以防我没有解释清楚。

enter image description here

这是我的代码

适配器类

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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?