android - 如何在单击时更改 RecyclerView 上未选择和选定项目的颜色?
问题描述
我有一个 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()
}
}
我想要更改与所选项目相对应的布局颜色的代码,以及更改未选定项目颜色的代码。提前致谢
解决方案
首先selectedposition
var selectedposition=""
在你的CurrencyTypeAdapter
类中创建字符串类型变量名
现在将位置标签添加到您的itemview
holder.itemview.tag="$position" //this is for to identify the itemview
onBindViewHolder
现在在方法
中将 onClick 侦听器添加到您的 itemviewholder.itemView.setOnClickListener{
selectedposition="$position"
notifyDataSetChanged()
}
现在在 onBindViewHolder 方法中
if(selectedposition.equal("$position")){ //this is your selected item do what you want }
推荐阅读
- scala - 如何使用jsoup提取没有类的div?
- mysql - 如何计算表的连续范围
- python - 根据父ID合并来自同一数据帧的多行
- ios - 为什么我在 swift5 中无法从模拟器中获取设备令牌?
- python - Python:如何获取仅出现在一组列表中的项目?
- excel-formula - 如何将两种细胞体验合二为一
- android - 如何在使用 Surface 视图时添加视频过渡?
- javascript - 如何从模式弹出窗口中的文本区域获取值?以及如何在我的输入字段中显示值?
- android - 使用嵌套请求参数改造帖子数据
- javascript - NodeJS中的异步等待(尝试/捕获)