нужен просмотр списка Android для отображения рисованного изображения PNG из текстового имени, хранящегося в базе данных sqlite - PullRequest
1 голос
/ 03 марта 2012

Я попробовал ответы на другие подобные вопросы, связанные с stackoverflow, но не могу понять, что я делаю неправильно. У меня есть база данных sqlite, которая включает в себя несколько столбцов, один из которых является именем файла png-файла, хранящегося в res / drawable. Я могу заполнить свой просмотр списка списком элементов из sqlite, и по щелчку я могу отобразить все детали, сохраненные для этого выбранного элемента - за исключением того, что изображение никогда не отображается. Если я просто отображаю имя файла изображения, оно отображает правильное имя для выбранного элемента. Но я не могу получить само изображение для отображения.

Если я жестко закодировал файл src изображения в макет XML, он отображается правильно, но мне нужно иметь возможность изменять изображение в зависимости от того, какой элемент выбран.

Вот три способа, которыми я пытался сделать это (с жестко заданным именем, например, упрощение, используя мой файл res / drawable / acorn.png). Ни одна из этих работ. Вся остальная правильная информация о товаре отображается, но без изображения. Есть идеи, что я здесь делаю не так?

XML-макет включает в себя:

<ImageView
android:id="@+id/wordimage"
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:maxWidth="200dp"
android:maxHeight="200dp"
android:scaleType="center"
android:contentDescription="image for this word"
/>

попытка 1:

int imageid = getResources().getIdentifier("com.brohoward.androidapps.itzadatabase:drawable/acorn.png", null, null);
ImageView imagenow = (ImageView) findViewById(R.id.wordimage);
imagenow.setImageDrawable(getResources().getDrawable(imageid));

попытка б:

int imageid = getResources().getIdentifier("com.brohoward.androidapps.itzadatabase:drawable/acorn.png", null, null);
ImageView imagenow = (ImageView) findViewById(R.id.wordimage);
imagenow.setImageResource(imageid);

попытка c:

ImageView imagenow = (ImageView) findViewById(R.id.wordimage);
imagenow.setImageBitmap(BitmapFactory.decodeFile("com.brohoward.androidapps.itzadatabase:drawable/acorn.png"));

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 03 марта 2012

Я бы начал с проверки, возвращает ли getResources().getIdentifier() правильный идентификатор ресурса. Сравните полученное значение с идентификатором ресурса, сгенерированным для изображения в R.java.

Если идентификатор ресурса правильный, попробуйте следующее:

Bitmap bmpWord = BitmapFactory.decodeResource(getResources(), imageid);
imagenow.setImageBitmap(bmpWord);

Если идентификатор ресурса неправильный, то это ваша проблема.

0 голосов
/ 03 марта 2012

Не включайте .png в вызов getIdentifier:

int imageid = getResources().getIdentifier("com.brohoward.androidapps.itzadatabase:drawable/acorn", null, null);

Затем установите ImageView, используя ImageView # setImageResource:

ImageView imagenow = (ImageView) findViewById(R.id.wordimage);
imagenow.setImageResource(imageid);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...