2012-02-23 2 views
1

저는 Android 응용 프로그램을 만들고 있는데 이미지가 많습니다 (약 200). 사용자가 선택한 이미지에 따라 특정 이미지를 표시하려고합니다.문자열에서 변수 이름을 만드시겠습니까?

선택 항목은 "USD", "AUD", "LKR"등과 같이 String입니다. 이미지 형식은 "usd.png", "aud.png", "lkr .png "등등. 나는 /res/drawable-mdpi 폴더에 이미지를 넣었고 보통은 R.drawable.usd과 같이 액세스합니다.

하지만이 경우에는 [분명히] 어렵습니다 (200 개 이상 아이콘). 어쨌든 사용자 선택에 따라 특정 이미지를 얻을 수 있습니까? 예를 들어, 사용자가 "USD"를 선택하면 "usd.png"라는 이미지를 얻고 싶습니다. 어떤 도움이 필요합니까?

미리 감사드립니다.

답변

2

Resources.getIdentifier와 Resources.getDrawable의 조합을 사용할 수 있습니까?

http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier(java.lang.String은 java.lang.String의, java.lang.String의)

http://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int)는

+0

답장을 보내 주셔서 감사합니다. 나는 이렇게 할 것이다. 나는 getIdentifier() 메소드가 있다는 것을 몰랐다.:) – Roshnal

+0

당신은 환영합니다 :) – phtrivier

0

이미지 이름을 값으로 사용하여 문자열을 키로 저장하려면 Map을 사용하십시오. 예를 들어 :

Map<String, String> images = new HashMap<String, String>(); 
images.put("USD", "usd.png");  // store the reference 
String usdImage = images.get("USD"); // retrieve the reference 
+0

는 것을 시도,하지만 난 그런 식으로 200 개 이상의 값을 저장해야합니다 :) 그래서 더 쉽고 찾고 있었다 그것의 효율적인 방법 .. – Roshnal

+0

200 값은 아무것도, 정말! 지도를 사용하면 괜찮을 것입니다. –

+0

다른 답변자가 말한대로 반성을 살펴보고 예상대로 작동하지 않는다면이 문제에 의지 할 것입니다. 답변을 보내 주셔서 감사합니다! – Roshnal

0

그러나 나는 당신이 항상 자바와 같은 일을 할 리플렉션을 사용할 수 안드로이드는 이름으로 리소스에 액세스 할 방법이 있는지 확실하지 않다 :

R.drawable.getClass().getField("nameGoesHere").get(null) 
+0

미안하지만 getResources(). getIdentifier() . 나는 나의 대답을 편집했다. –

0

Reflection API 작업입니다 Android에서 그것은 모든 Java Developer가 배워야 할 것입니다.

+0

답변 주셔서 감사합니다 ... 나는 그것을 시도 할 것입니다 – Roshnal

+0

대체로 일반적인 대답, 정확히 어떻게 할거 니? 안드로이드 SDK를 사용하여 리소스를 얻는 더 좋은 방법이 있습니다. –

+0

완전한 대답을 쓰지 않고 전체 API의 유틸리티를 지적하고 간단한 답을 제공하지 않을 것입니다. 물고기를주는 대신 낚시를 배우십시오 ... –

2

리소스의 이름을 구성 할 수 있으면 getResources(). getIdentifier()를 호출하여 ID를 가져올 수 있습니다. 그러면 아이디를 가져올 수 있습니다.

+0

getIdentifier를 어떻게해야합니까? – Roshnal

+0

죄송합니다. getResources(). getIdentifier()를 말 했어야합니다. –

+0

답변 해 주셔서 감사합니다! 나는 이렇게 할 것입니다. 그러나 저는 몇 가지 링크가 있기 때문에 다른 답변을 선택하고 있습니다. 그럼에도 불구하고, 당신의 대답에 감사드립니다! +1 – Roshnal

관련 문제