Как я могу вызвать setColorFilter в пользовательском адаптере RecyclerView в Kotlin? - PullRequest
0 голосов
/ 26 ноября 2018

Я создаю приложение для Android в Котлине, которое использует RecyclerView для отображения данных из базы данных, поэтому я создал специальный адаптер, который извлекает данные из курсора и создает каждый элемент, который должен отображаться в RecyclerView.

Проблема в том, что мне нужно добавить цветной фильтр в ImageView (который использует векторный актив для отображения соответствующего значка), но когда я пытаюсь установить цветной фильтр для ImageView внутри onBindViewHolder, я получаю сообщение об ошибке:

Выражение «colorFilter» типа «ColorFilter!»не может быть вызван как функция.Функция invoke () не найдена.

Я сделал это на Java для других приложений и отлично работает, но я не работаю, поэтому Как я могу применить цветной фильтр вПользовательский адаптер для 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))
}

color filter in on RecyclerView

1 Ответ

0 голосов
/ 26 ноября 2018

Решено с:

 holder.icono.setColorFilter(cursor.getInt(cursor.getColumnIndexOrThrow(MMDContract.columnas.COLOR_MEDICAMENTO)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...