繁体   English   中英

如何在单击时更改 RecyclerView 上未选中和选中项目的颜色?

[英]How can I change the color of the unselected and selected items on a RecyclerView on click?

我有一个 RecyclerView 适配器,可以为列表中的每个项目设置图标。 这是适配器类

package m.e.myapplication

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.calculator_cost_currency_type_item.view.*

class CurrencyTypeAdapter: RecyclerView.Adapter<CurrencyTypeViewHolder>() {

private val currencyTypeList = listOf(R.drawable.icon_currency_dollar, R.drawable.icon_currency_euro, R.drawable.icon_currency_lira)

override fun getItemCount(): Int {
    return currencyTypeList.size
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CurrencyTypeViewHolder {
    val layoutInflater = LayoutInflater.from(parent.context)
    val cellForRow = layoutInflater.inflate(R.layout.calculator_cost_currency_type_item, parent, false)
    return CurrencyTypeViewHolder(cellForRow)
}

override fun onBindViewHolder(holder: CurrencyTypeViewHolder, position: Int) {
    val currencyTypeItem = currencyTypeList[position]

    holder.itemView.currencyTypeItemCostImageViewCCF.setImageResource(currencyTypeItem)
}
}

class CurrencyTypeViewHolder(view: View): RecyclerView.ViewHolder(view) {
}

这是从 MainActivity 调用它的方式

package m.e.myapplication

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    currencyTypeRecyclerViewCCF.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
    currencyTypeRecyclerViewCCF.adapter = CurrencyTypeAdapter()
    }
}

我想要更改与所选项目对应的布局颜色的代码,以及更改未选择项目颜色的代码。 提前致谢

首先在您的CurrencyTypeAdapter类中创建字符串类型变量名称它selectedposition var selectedposition=""

现在将位置标签添加到您的itemview holder.itemview.tag="$position" //this is for to identify the itemview

现在在onBindViewHolder方法holder.itemView.setOnClickListener{ selectedposition="$position" notifyDataSetChanged() }中将 onClick 侦听器添加到您的 itemview

现在在 onBindViewHolder 方法中if(selectedposition.equal("$position")){ //this is your selected item do what you want }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM