Ищете решение, я пришел к описанному ниже.
Детали:
- строки, содержащие идентификаторы ресурсов были сохранены в базе данных,
- полные адреса ресурсов были использованы для описания их (так, например:
R.drawable.chopin
вместо простого chopin
- иногда вы можете забыть что на самом деле скрыто за ресурсом: это изображение или строка, на которые он указывает? Сохранение полных идентификаторов не позволяет забыть о их типах),
- Идентификаторы ресурсов были получены методом в виде строк (также хранящихся в база данных равна
text
), а затем pars ed в целые идентификаторы.
Во-первых, контекст должен был быть определен:
public DBAdapter(Context context) {
this.context = context;
dbHelper = new dbHelper();
}
Как я был контекст, я мог бы разобран строки:
int composerPicture = context.getResources().
getIdentifier(composerPictureId.substring(11), "drawable",
context.getPackageName());
и:
int composerName = context.getResources().
getIdentifier(composerNameAddress.substring(9), "string",
context.getPackageName());
Обратите внимание на количество символов, которые мы отключили, используя substring()
способ. Когда идентификатор начинается с R.drawable.
, у нас есть 11 символов, и это значение необходимо отрезать. Если есть R.string.
, мы обрезаем только 9 символов. Таким образом, мы получаем чистое имя нашего ресурса (в данном случае - drawable или string). Методы назначают идентификатор, и мы имеем целое число. После этого мы можем сохранить его в ArrayList<Integer>
или где-нибудь еще.
Возможно, вы просто использовали Reflection;) –