getResources()错误

时间:2013-02-27 12:08:43

标签: android image resources

这个

// 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;
    }

}

4 个答案:

答案 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()