0

There is an AppCompatImageView in my RecyclerView that I want to set a vector image to. I have tried a lot of solutions but none of them works (the vector image is not set). I also checked this link.

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))
    }}

As you see i have tried setImageResource and setImageDrawable in the onBindViewHolder .

This is the 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"/>
Community
  • 1
  • 1
Sina Rahimi
  • 323
  • 1
  • 3
  • 13

1 Answers1

0

above Version 21 you have to follow these steps:

In app's build.gradle you need to include:

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

if you wish to below Build Version API 21 you have to add this line in onCreate() method.

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);  
Vasudev Vyas
  • 726
  • 1
  • 10
  • 28
  • 1
    I put the `AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); ` in the onCreate() of my fragment and its worked – Sina Rahimi Apr 23 '19 at 07:18