Java:如何在 RecyclerView Adapter 中为 ContextCompat

我找到了解决方案,但我仍然把我的问题留在下面。我使用setBackgroundResource而不是ContextCompat,解决方案:


holder.mTextPar.setBackgroundResource(R.drawable.border_box);

原问题:


我需要使用 ContextCompat 设置我的项目元素背景,但我不知道将什么放入上下文


这是我试过的:


public Context context;


@Override

public void onBindViewHolder(@NonNull GameViewHolder holder, int position) {


  holder.mTextPar.setBackground(ContextCompat.getDrawable(context, R.drawable.border_box));

}

当我打开这个 GameAdapter“工作”的 Activity 时,应用程序立即崩溃并且错误报告更喜欢我有这个的这一行holder.mTextPar.setBackground(ContextCompat.getDrawable(context, R.drawable.border_box));


largeQ
浏览 81回答 3
3回答

慕丝7291255

所有告诉您将上下文作为参数的答案都是错误的或多余的,您已经有一种从视图中获取上下文的方法:@Overridepublic void onBindViewHolder(@NonNull GameViewHolder holder, int position) {  Context context = holder.itemView.getContext(); }

Helenr

在您的适配器构造函数中,添加上下文作为参数。public Context context;public YourAdapterClass(Context context){    this.context = context;}@Overridepublic void onBindViewHolder(@NonNull GameViewHolder holder, int position) {    holder.mTextPar.setBackground(ContextCompat.getDrawable(context, R.drawable.border_box));}

一只名叫tom的猫

不清楚你说的是什么适配器,ArrayAdapter适配器RecyclerView;请提及;还可以编写更多代码来帮助其他人了解需要上下文的内容/位置。通常,如果它是RecyclerViewAdapter,则视图的上下文将会,例如itemView.getContext(),如果是ArrayAdapter,则有一个getContext()方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java