android - RecyclerView Adapter 的 onBindViewHolder 方法 setImageResource 有效
问题描述
我想设置一个矢量图像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"/>
解决方案
在版本 21 以上,您必须按照以下步骤操作:
在应用程序中 build.gradle
,您需要包括:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
如果您希望低于 Build Version API 21,则必须在onCreate()
方法中添加此行。
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
推荐阅读
- javascript - Puppeteer 不激活按钮点击,尽管选择了按钮
- c++ - 使用 if 语句时出现逻辑问题
- python - KeyError: 'Key' 和 TypeError: 需要一个整数
- python - 为什么我的 conda 环境会继承所有基础包?
- node.js - 使用函数对象的 Node.js 自定义中间件
- c# - 通过全名从模块实例化python类
- r - 使用简单的数字在 ggplot2 中分配颜色
- c++ - if 语句中的 [[maybe_unused]] 似乎在 GCC 中不起作用
- android - 没有注册账户的应用内购买
- pagination - 分页代码不保留额外的过滤器