1

我有 10 个图像视图:

ImageView Card0=(ImageView)findViewById(R.id.Card0);
.....
ImageView Card9=(ImageView)findViewById(R.id.Card9);

所有图像都在我的可绘制文件夹中,但我正在从远程数据库中选择卡片。一个 php 脚本生成 10 张随机卡片。

我有包含文件名的数组:

Cards = deal.split(":");

现在我想设置图像:

Card0.setImageResource(R.drawable.Cards[0]);

我已经尝试并搜索了很多,但无法设置任何变量setImageResource(R.drawable.*Variable*);

有人请帮忙。

4

1 回答 1

2

无法使用 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;
}

您将从服务器收到卡片的索引。此函数将返回适当的资源。

于 2012-08-04T17:36:19.820 回答