Ошибка разбора - Android Java - PullRequest
1 голос
/ 27 апреля 2011

Я пытаюсь динамически заполнить вид сетки значками. Я следовал за приветом учебника gridview. Однако массив с изображениями не всегда одинаков. В зависимости от действия, заданного ранее, задается другой image array (извлеченный из ответа мыла), который состоит из имен значков, например, повестка дня => повестка дня. Я хотел создать массив, просматривая массив и добавляя его с R.drawable + icon_name. Однако R.drawable не может выполнить синтаксический анализ запрошенного массива Integer.

public class ImageAdapter extends BaseAdapter 
{
    private Context mContext;
    final ArrayList<String> image = getIntent().getStringArrayListExtra("image");

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return icoontjes.size();
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    public ArrayList<Integer> icoontjes;
    {
        for (int i=0; i<image.size(); i++){
            Integer icon= Integer.valueOf("R.drawable."+image.get(i));
            icoontjes.add(icon);
        }
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(icoontjes.get(position));
        return imageView;
    }
}

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Вы можете использовать

for (int i=0; i < image.size(); i++) {
    Integer icon = getResources().getIdentifier(image.get(i), "drawable", "your.package");
    icoontjes.add(icon);
}

где your.package - базовый пакет вашего приложения для Android (пакет, в котором вы определили static final R class.

Таким образом, переменная icon будет содержать идентификатор вашего рисованного элемента на основе вашего image.get(i).

1 голос
/ 27 апреля 2011

я могу дать вам ответ, но вы не должны (на самом деле не должны) делать это ...

вместо

Integer icon= Integer.valueOf("R.drawable."+image.get(i));

try

R.class.getField("R.drawable."+image.get(i)).getInt(null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...