【发布时间】:2018-11-26 01:04:33
【问题描述】:
我正在 Kotlin 中创建一个使用 RecyclerView 显示数据库中的数据的 Android 应用,因此我创建了一个自定义适配器,它从光标检索数据并创建必须在 RecyclerView 上显示的每个项目。
问题是,我需要向 ImageView 添加一个颜色过滤器(它使用矢量资源来显示对应的图标),但是当我尝试在 onBindViewHolder 中为 ImageView 设置颜色过滤器时,我收到错误消息:
元组'ColorFilter!'的表达式'colorFilter'不能作为函数调用。找不到函数'invoke()'。
我已经在 Java 中为其他应用程序完成了此操作,并且运行良好,但我的 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