我正在Kotlin中创建一个Android应用程序,该应用程序使用RecyclerView来显示数据库中的数据,因此我创建了一个自定义适配器,该适配器可从光标中检索数据并创建必须在RecyclerView上显示的每个项目。
问题是,我需要向ImageView添加一个滤色器(使用Vector资产显示相应的图标),但是当我尝试在onBindViewHolder内为ImageView设置滤色器时,出现错误消息:< / p>
元组'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))
}
答案 0 :(得分:0)
解决:
holder.icono.setColorFilter(cursor.getInt(cursor.getColumnIndexOrThrow(MMDContract.columnas.COLOR_MEDICAMENTO)))