2012-11-12 17 views
26

Olası Çoğalt çekilebilir bul: başlık için tüm üzgün ait
Android - Open resource from @drawable Stringdize tarafından

İlk ama ben ayarlayabilirsiniz tam olarak ne başlık bilmiyorum. 'Picture0001':

bir dış veritabanından örneğin bir dize recibe olacaktır:

Tamam, burada sorum.

Yeniden/çekilebilen klasörde resmin hangi adda resmi olduğunu görüyorum1000.

Bu resmi bir ImageView'ın arkaplanı (kaynağı) olarak ayarlamak istiyorum.

Sorun şu ki, bu resmi dış veritabanından aldığım dizeyle nasıl görüntüleyebilirim.

Çok teşekkür ederim.

cevap

113

Evet, Resources.getIdentifier()'u kullanarak isme bakabilirsiniz.

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

Bu verimli değil, ara sıra kaynaklara bakmak için çalışır.

+0

@QuinDa Great ! Sizin için işe yaradıysa bir cevabın yanındaki onay işaretini tıklamayı unutmayın - gelecekte daha iyi cevaplar almanıza yardımcı olacak! ;) – Eric

+0

Denedim ama diyor ki: Oylamada 15 itibar gerekiyor): – QuinDa

+0

@QuinDa Onay işareti değil, yukarı ok (hangi, evet, 15 itibara ihtiyacı var). Ama zaten onu bulmuşsunuz gibi görünüyor! :) – Eric

4

Ayrıca böyle yansıma kullanabilirsiniz:

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); 

rağmen, en iyi çözüm MarvinLabs önerdi budur.

+3

"Resources.getIdentifier" ın bence bundan daha kolay bir yöntem olduğunu düşünüyorum. – Tim

+0

Bu harika! Bu yöntemi bilmiyordum. Teşekkürler! –

+0

Evet, ancak bu çözüm daha hızlıdır (% 40'tan fazla) –