【问题标题】:How can I call setColorFilter in RecyclerView's custom Adapter in Kotlin?如何在 Kotlin 的 RecyclerView 的自定义适配器中调用 setColorFilter?
【发布时间】:2018-11-26 01:04:33
【问题描述】:

我正在 Kotlin 中创建一个使用 RecyclerView 显示数据库中的数据的 Android 应用,因此我创建了一个自定义适配器,它从光标检索数据并创建必须在 RecyclerView 上显示的每个项目。

问题是,我需要向 ImageView 添加一个颜色过滤器(它使用矢量资源来显示对应的图标),但是当我尝试在 onBindViewHolder 中为 ImageView 设置颜色过滤器时,我收到错误消息:

元组'ColorFilter!'的表达式'colorFilter'不能作为函数调用。找不到函数'invoke()'。

我已经在 J​​ava 中为其他应用程序完成了此操作,并且运行良好,但我的 kotlin 无法正常工作,那么如何在 ReclyclerView 的自定义适配器中应用颜色过滤器?

这是我的代码:

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
cursor.moveToPosition(position)
val medicineType = cursor.getString(cursor.getColumnIndexOrThrow(MMDContract.columnas.TIPO_MEDICAMENTO))

when(iconsCollection?.indexOf(medicineType)){
    0 -> {holder.icono.setImageResource(R.drawable.ic_roundpill)}
    1 -> {holder.icono.setImageResource(R.drawable.ic_tab)}
    2 -> {holder.icono.setImageResource(R.drawable.ic_capsula)}
    3 -> {holder.icono.setImageResource(R.drawable.ic_syrup)}
    4 -> {holder.icono.setImageResource(R.drawable.ic_drops)}
    5 -> {holder.icono.setImageResource(R.drawable.ic_eyedrops)}
    6 -> {holder.icono.setImageResource(R.drawable.ic_ointment)}
    7 -> {holder.icono.setImageResource(R.drawable.ic_powder)}
    8 -> {holder.icono.setImageResource(R.drawable.ic_gel)}
    9 -> {holder.icono.setImageResource(R.drawable.ic_inhalator)}
    10-> {holder.icono.setImageResource(R.drawable.ic_suppository)}
    11-> {holder.icono.setImageResource(R.drawable.ic_intravenous)}
    12-> {holder.icono.setImageResource(R.drawable.ic_syringe)}
}

holder.icono.colorFilter(ContextCompat.getColor(holder.itemView.context,R.color.flamingo)

holder.NombreComercial.text = cursor.getString(cursor.getColumnIndexOrThrow(MMDContract.columnas.NOMBRE_COMERCIAL_MEDICAMENTO))
holder.NombreGenerico.text = cursor.getString(cursor.getColumnIndexOrThrow(MMDContract.columnas.NOMBRE_GENERICO_MEDICAMENTO))
}

【问题讨论】:

    标签: android android-recyclerview kotlin


    【解决方案1】:

    解决方法:

     holder.icono.setColorFilter(cursor.getInt(cursor.getColumnIndexOrThrow(MMDContract.columnas.COLOR_MEDICAMENTO)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 2018-06-11
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多