如何在RecyclerView中更改特定项目的视图

时间:2018-01-15 23:46:45

标签: android kotlin

假设我有项目列表的适配器,每个项目的视图都包含textview。如何访问此项目的textview,例如更改它的颜色。 我可以通过在每个项目中添加一个单击侦听器并在单击项目时对文本颜色进行更改来实现此目的。但有没有办法以其他方式实现这一目标?

在我的ViewHolder中,我得到了:

val info: TextView = view.find(R.id.info_item)

一种方法:

fun bindItems(listItem: List<String>) {

                info.text = "Name: ${listItem[0]}"}

PS。我知道如何更改文本视图的颜色:)

3 个答案:

答案 0 :(得分:2)

onBindViewHolder你可以这样做:

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    holder.itemView.setBackgroundColor(if(position%2==0) 0xffff0000.toInt() else 0xff00ff00.toInt())

答案 1 :(得分:0)

使用下面的代码,我已经尝试过并且它正在运行:

private var row_index: Int = -1

itemView.txtContactAddress.setOnClickListener({
                row_index = position;
                notifyDataSetChanged()
            })

if (row_index == position) {
                    itemView.txtContactAddress.setTextColor(Color.parseColor("#ffffff"));
                } else {
                    itemView.txtContactAddress.setTextColor(Color.parseColor("#000000"));
            }

答案 2 :(得分:0)

可能你可以尝试跟随;

  • 创建一个扩展了RecyclerView.ViewHolder的类,同时实现了View.OnClickListener。 (例如MyViewHolder)

  • 如果您认为有必要,
  • 覆盖构造函数

  • 覆盖onClick函数以进行点击处理。

  • 调用更改从onClick函数查看方法。

  • 从适配器类的overCided onCreateView返回MyViewHolder的实例。

  • 绑定新的ViewHolder。

Ps:不要忘记适配器的更改类型参数。 (RecyclerView.Adapter)