2012-11-12 4 views
26

가능한 중복 당김 찾기 : 제목에 대한 모든 유감의
Android - Open resource from @drawable String문자열로

먼저하지만 난 설정할 수 있습니다 정확히 제목 모른다. 'picture0001'

나는 외부 데이터베이스에서 예를 들어 문자열을 recibe됩니다

좋아, 여기 내 질문입니다.

res/drawable 폴더에는 picture0001이라는 이름의 그림이 있습니다.

그 그림을 ImageView의 배경 (원본)으로 설정하고 싶습니다.

질문은 내가 어떻게 외부 데이터베이스에서 얻은 문자열로이 그림을 찾을 수 있는가입니다.

정말 고마워요.

답변

113

예, Resources.getIdentifier()을 사용하여 이름으로 검색 할 수 있습니다.

Context context = imageView.getContext(); 
int id = context.getResources().getIdentifier("picture0001", "drawable", context.getPackageName()); 
imageView.setImageResource(id); 

비정기적인 리소스를 찾는 데는 효과적이지 않습니다.

+0

@QuinDa Great ! 그것이 당신을 위해 일한 경우 답변 옆의 체크 표시를 잊지 마세요 - 그것은 당신이 미래에 우리에게서 더 나은 답변을 얻을 수 있도록 도와 줄 것입니다! ;) – Eric

+0

나는 그것을 시도했다 : 투표 업은 15 평판을 요구한다 : – QuinDa

+0

@QuinDa 체크 마크, 아니 위 화살표 (예, 15 평판을 필요로). 하지만 이미 찾은 것 같습니다! :) – Eric

4

당신은 또한이 같은 반사를 사용할 수 있습니다

Class c = Class.forName("your.project.package.R"); 
Field f = c.getDeclaredField("drawable"); 
Class d = f.getDeclaringClass(); 
Field f2 = d.getDeclaredField("yourstring"); 
int resId = f2.getInt(null); 
Drawable d = getResources().getDrawable(resId); 

비록, 가장 좋은 방법은 MarvinLabs 제안 것입니다.

+3

'Resources.getIdentifier'는 아마도 이것보다 쉬운 방법이라고 생각합니다. – Tim

+0

그게 좋습니다! 나는이 방법을 몰랐다. 감사! –

+0

네,하지만이 솔루션은 빠릅니다 (40 % 이상) –