2016-04-13 11 views
0

Küçük bir kart oyunu var. Bu onuJava setImageResource

ArrayList<String> liste = new ArrayList<String>(); 

ve dolgu: bir ArrayList ben 52 kart eklemek

for (int n=1; n<14; n++) { 
    liste.add("d" +n); //diamonds 
    liste.add("c" +n); //clubs 
    liste.add("s" +n); //spades 
    liste.add("h" +n); //hearts 
} 

Bu kodu kullanmak bir kart çizmek için: Benim çekilebilir klasörde

private void drawCard() { 
    if (liste.size()!=0) { 
     Collections.shuffle(liste); 
     kort.setText("" + liste.get(0)); 
     int i = liste.size(); 
     cardsLeft.setText("" + (i - 1)); 
     cardImage.setImageResource(R.drawable.XXX); 
     liste.remove(0); 
    } 
    else kort.setText("No more cards in deck"); 
} 

Ben ArrayList'teki isimle aynı ada sahip 52 resimli kartınız var. Program çizerken, örn. d2 i de çekilebilir klasörden görüntü d2 için ImageView cardImage ayarlamanız gerekir:

cardImage.setImageResource(R.drawable.d2); 

çizilmiş kartı eşleşecek şekilde ben ImageView nasıl değiştiğini için yardıma mı ihtiyacınız

bunu yapabilirsiniz

cevap

1

:

public static int getDrawableId(Context ctx, String name) { 
    return ctx.getResources().getIdentifier(name, "drawable", ctx.getPackageName()); 
} 

cardImage.setImageResource(getDrawableId(YourActivity.this, "d2")); 
+0

Sorduğum için üzgünüm ama bu nasıl çalışıyor? Oyun d2 (Diamonds of 2) çizerse, TextView basit bir kod ile güncellenir ve ekranda d2 gösterilir. ImageView R.drawable.d2 ile nasıl güncellerim? Her bir görüntü için bir kod yazmam gerekiyor mu? Değiştirilecek bir şey: cardImage.setImageResource (R.drawable.liste.get (0)); –

+0

Resources.getIdentifier (Dize adı, Dize türü), belirli bir türdeki belirli bir ada sahip kaynağın kimliğini size döndürür. Yani, getIdentifier ("d2", "çizilebilir"), R.drawable.d2 döndürür Veya getIdentifier ("card_layout", "layout"), R.layout.card_layout öğesini döndürür. Kaynak tanımlayıcıları tamsayılardır ve onları gerektiği gibi yerleştirmek için setImageResource() –

+0

@AlexanderKulyakhtin Örnek çağrınız, getDrawableId() 'bağlam parametresini özler. – Floern