0

我在资产中有很多文件夹和图像,例如:“folder1/img1.jpg, img2.jpg...img15.jpg; folder2/img1.jpg, img2.jpg...img20.jpg;.....” . 我有一个 ListView,其中包含 AssetManager 资产中所有文件夹的名称,当 OnClickItem 时,我将从单击的项目(选定的文件夹)加载所有图像。因为我在 GitHub 上使用代码“Curl Page”,所以我需要 ID 数组来加载每个文件夹中的所有图像,不要使用简单数组进行绘制,例如:

private int[] mIdsSelectedFolder = { R.drawable.img1, R.drawable.img2,... R.drawable.img15};

然后我加载图像:

Drawable d = getResources().getDrawable(mIdsSelectFolder[index]);

但我不知道如何计算每个文件夹中的数字图像然后获取所有 ID 图像,从每个文件夹创建一个数组,不要通过复制和粘贴图像名称来输入所有资源,因为每个文件夹都有图像数量不同的!

4

3 回答 3

1

您可以尝试使用 getIdentifier 按名称获取 id。

下面你会看到示例代码:

int id = getResources().getIdentifier("img" + index , "id", getPackageName());
if (id!= null)
{
     Drawable d = getResources().getDrawable(id);
}
于 2013-04-29T13:55:15.817 回答
0

以下代码将列出驻留在“目录”中的文件。

try {
    AssetManager am = this.getAssets();
    String str[] = getAssets().list("directory_name");
    for (int i = 0; i < str.length; i++) {
        Log.d("TAG", str[i]);
        if (str[i].endsWith(".jpg")) {
            Drawable drw = Drawable.createFromStream(am.open(str[i]),null);
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

您只需要创建特定目录的数组并在其中添加文件名。您也可以为此创建自定义类。在我的示例中,如果文件名以JPG结尾,则将从中获取 drawable。

编辑: Drawable.createFomStream() 到 Drawable.createFromStream()

于 2013-04-29T14:56:03.353 回答
0

您必须创建服装列表视图。并覆盖 getView 方法

public View getView(final int position, View convertView,
            ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.userprofilepic, null, true);

        ImageView img= (ImageView) view.findViewById(R.id.img);

        img.setImageDrawable(getResources().getDrawable(mIdsSelectFolder[position]););



        return view;
    }
于 2013-04-29T13:40:03.743 回答