这个
// Look for the image
int identifier = Context.getResources().getIdentifer(Index.THUMBNAIL, "drawable", getPackageName());
我收到了错误
此行有多个标记 - 对于MenuAdapter类型,方法getPackageName()未定义 - 无法从Context类型中对非静态方法getResources()进行静态引用 - 无法解决上下文
我真的不知道如何解决这个问题。
这是我的班级。目标是通过.setRecourse(int)
更改ImageView中的图像 package com.example.whs;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MenuAdapter extends BaseAdapter{
// Define variables
ArrayList<HashMap<String, String>> data;
Activity activity;
private LayoutInflater inflater=null;
public MenuAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data = d;
inflater = LayoutInflater.from (a);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);
// Focus on the parts that have to be changed
TextView title = (TextView)vi.findViewById(R.id.title); // title
TextView subtitle = (TextView)vi.findViewById(R.id.subtitle); // subtitle
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image
//Get the info from the hashmap with the arraylist position
HashMap<String, String> item = new HashMap<String, String>();
item = data.get(position);
// Look for the image
int identifier = getApplicationContext().getResources().getIdentifer(Index.THUMBNAIL, "drawable", MenuAdapter.class.getPackage().getName());;
// Setting all values in listview
title.setText(item.get(Index.TITLE));
subtitle.setText(item.get(Index.SUBTITLE));
thumb_image.setImageResource(identifier);
return vi;
}
}
答案 0 :(得分:4)
编辑: 由于您有活动参考,您可以使用
activity.getResources().getIdentifer(Index.THUMBNAIL, "drawable", getPackageName())
尝试像这样打电话
int identifier = getActivity().getResources().getIdentifer(Index.THUMBNAIL, "drawable", getPackageName())
答案 1 :(得分:1)
请尝试以下代码:
Context.getResources().getIdentifer(Index.THUMBNAIL, "drawable",
YourActivityName.class.getPackage().getName());
答案 2 :(得分:0)
如果getApplicationContext()不起作用,我就是这样做的:
int id = getResources().getIdentifier("packagename:drawable/" + drawableresourcename, null, null);
image.setImageResource(id);
答案 3 :(得分:0)
只需在致电context
之前添加getResources()
,例如:context.getResources()