2017-02-26 33 views
1

我有这个方法,我想使用getResources()里面:我不能使用getResources里面onBindViewHolder()?

public void onBindViewHolder(ViewHolder viewHolder, int i) { 

     viewHolder.itemTitle.setText(titles[i]); 
     viewHolder.itemImage.setImageResource(images[i]); 


     viewHolder.itemImage.setImageBitmap(
       decodeSampledBitmapFromResource(getResources(), R.id.item_image, 200, 200)); 
    } 
+3

你必须在你的适配器'Context'参考变量,因此使用'context.getResources()' –

回答

7
public void onBindViewHolder(ViewHolder viewHolder, int i) { 
    Resources res = viewHolder.itemView.getContext().getResources(); 
    ... 
} 
0

通过Activity语境this在适配器类:

Context context ; 
public YourAdapter(Context context ,...) //constructor 
{ 
    this.context = context ; 
    //other code 
} 

然后u可以使用:

context.getResources() ; 
+0

Java不喜欢使用下划线PHP和构造函数以大写字母开头 –

+0

我把它写在textpad ,,,所以格式化是不正确的.. – rafsanahmad007

+0

了解它......... – rafsanahmad007

2

我无法在onBindViewHolder()中使用getResources?

是的,你可以。使用

viewHolder.itemView.getResources(); 

getResources()是部分View。无需通过Context

-1

得到Context对象由Adapter构造函数。

private Context context; 

public YourAdapter(Context context){ //or you can make other method to get/set Context obect 
    this.context = context; 
} 

然后你可以使用this.context.getResources()访问getResources()方法。

和初始化从活动或片段适配器一样 -

YourAdapter yourAdapter = new YourAdapter(getApplicationContext()); 
相关问题