Метод setImageResource в onBindViewHolder адаптера RecyclerView не работает

В моем AppCompatImageView есть RecyclerView, которому я хочу установить векторное изображение. Я пробовал много решений, но ни одно из них не работает (векторное изображение не установлено). Я также проверил этосвязь.

class FunctionAdapter(
private val context: FragmentActivity,
private val methods: MutableList<Method>,
private val viewHolderListener1: ViewHolderListener
                                                    ) :
RecyclerView.Adapter<FunctionAdapter.ViewHolder>() {

private val viewHolderListener: ViewHolderListener = viewHolderListener1
private var pos: Int? = null

override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {

    viewHolder.txtViewMethod.text = methods[position].methodName
    viewHolder.textViewFuncOne.text = methods[position].funcOne
    viewHolder.textViewFuncTwo.text = methods[position].funcTwo
    viewHolder.textViewFuncThree.text = methods[position].funcThree
    viewHolder.textViewFuncFour.text = methods[position].funcFour
    viewHolder.buttonRun.tag = position

    if (methods[position].methodNameFlag == true) {

            val drawableF = AppCompatResources.getDrawable(context, R.drawable.ic_home)
            viewHolder.checkImgView.setImageResource(R.drawable.ic_round_done_all_24px)
            viewHolder.checkImgView.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_home))
            viewHolder.checkBox.setImageDrawable(drawableF)
            viewHolder.checkImgView.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_round_done_all_24px))
        viewHolder.checkImgView.setColorFilter(ContextCompat.getColor(context, R.color.colorPrimary))
    } else {
     //            viewHolder.checkImgView.setImageResource(R.drawable.ic_done_black_24dp)

        viewHolder.checkImgView
            .setColorFilter(ContextCompat.getColor(context, R.color.grey_light))
    }}

Как видите, я пробовал setImageResource и setImageDrawable в onBindViewHolder .

это xml

    <android.support.v7.widget.AppCompatImageView
        android:id = "@+id/checkBox_test"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginTop = "16dp"
        android:layout_marginBottom = "4dp"
        app:srcCompat = "@drawable/ic_done_black_24dp"
        app:layout_constraintTop_toTopOf = "parent" app:layout_constraintEnd_toStartOf = "@+id/guideline1"
        android:layout_marginEnd = "8dp"/>

Как именно не работает?

Mike M. 22.04.2019 09:53

в чем проблема..?

Hanzala 22.04.2019 09:54

@МайкМ. это не изменило имидж вообще.

Sina Rahimi 22.04.2019 09:57

Ну, если вы имеете в виду, что это не изменится, когда это «что-то произойдет», вам нужно будет редактировать вашего вопроса, чтобы предоставить минимальный воспроизводимый пример этого чего-то.

Mike M. 22.04.2019 10:02

Возможно ли, что методы [position].methodNameFlag всегда ложны?

Keivan Esbati 22.04.2019 10:16

@KeivanEsbati Я отладил его, и он не всегда был ложным

Sina Rahimi 22.04.2019 10:22

Какой тип viewHolder.checkBox? Если это android.widget.CheckBox, то у него нет setImageResource метода.

Fartab 22.04.2019 10:36

какой вид у checkImgView?

roghayeh hosseini 22.04.2019 11:33

@roghayehhosseini Я добавил вид, но упомянул об этом в первом абзаце своего вопроса.

Sina Rahimi 22.04.2019 11:42
0
9
587
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

выше Версии 21 вы должны выполнить следующие шаги:

В приложении build.gradle необходимо указать:

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

если вы хотите использовать Build Version API 21 ниже, вы должны добавить эту строку в метод onCreate().

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);  

Я поставил AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); в onCreate() моего фрагмента, и это сработало.

Sina Rahimi 23.04.2019 09:18

Другие вопросы по теме