R.id.drawable.* を使用して動的にロードすることはできません。
解決策 1:
あなたのカード画像の名前は次のとおりであると仮定します: card0.png, card1.png ... card9.png assets
(ディレクトリ内にres
) ディレクトリを作成することをお勧めします。assets
カード イメージをディレクトリにコピーします。
import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.drawable.Drawable;
import java.io.InputStream;
import java.io.IOException;
public class YourActivity extends Activity {
//...
public Drawable loadAssetImage(String fileName) {
AssetManager assetMgr = this.getAssets();
try {
InputStream is = assetMgr.open(fileName);
Drawable d = Drawable.createFromStream(is, null);
return d;
}catch( IOException e ) {
// error...
return null;
}
}
}
このメソッドは、ディレクトリloadAssetImage()
からイメージをロードします。assets
したがって、文字列パラメーターを受け入れるため、画像を動的にロードできるようになりました。
ディレクトリ名は でなければならないことに注意してくださいassets
。Android では、assets
ディレクトリ内の内部リソースへの直接 (生の) アクセスが許可されています。
解決策 2
public Drawable loadCardImage(int index) {
switch( index ) {
case 0:
return android.R.Card0;
case 1:
return android.R.Card1;
..
case 9:
return android.R.Card9;
}
return null;
}
サーバーからカードのインデックスを受け取ります。この関数は、適切なリソースを返します。