У меня есть несколько изображений в моем проекте. Имя изображения сохраняется в String, и я хотел бы setImageResource (R.drawable. "....." ); с строкой имени изображения, но проблема в том, что это не работает.
Как я могу это сделать?
У меня есть несколько изображений в моем проекте. Имя изображения сохраняется в String, и я хотел бы setImageResource (R.drawable. "....." ); с строкой имени изображения, но проблема в том, что это не работает.
Как я могу это сделать?
это не правильный синтаксис, и вы должны получить ошибку времени компилятора, прежде чем изменять ресурс изображения, вы должны знать, что все ресурсы предоставили идентификатор, эти идентификаторы хранятся в файле R.java. Идентификаторы хранятся в целочисленном формате, и в вашем приложении вы можете получить все эти ресурсы с помощью этого идентификатора, а не по имени, поэтому вам нужно сначала получить идентификатор ресурса, используя:
String mDrawableName = "myimg";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
а затем используйте этот идентификатор.
Использование
getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName())
Смотрите этот поток. Это должно помочь вам. В основном вам нужно получить идентификатор, а затем загрузить с помощью setImageResource
.
public int getIdentifier (имя строки, строка defType, строка defPackage);
name - имя изображения
defType - он будет доступен для вашего случая
defPackage - пакет по умолчанию вашего приложения (я думаю, вы можете использовать getPackage() для активности для этого)
попробуйте это
String uri = "NAME";
// int imageResource = R.drawable.icon;
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
ImageView imageView = (ImageView) findViewById(R.id.myImageView);
Drawable image = getResources().getDrawable(imageResource);
imageView.setImageDrawable(image);
Я заработал, перемещая изображение из "drawable" в "raw" и получая доступ к строковому значению, как показано ниже. Если у вас нет папки "raw" в каталоге "res", щелкните правой кнопкой мыши по каталогу ресурсов res- > new- > Android и в раскрывающемся списке resourcetype выберите "raw" .
String avatar = ("android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue));