0

アセットに多くのフォルダーと画像があります。例:「folder1/img1.jpg、img2.jpg...img15.jpg; folder2/img1.jpg、img2.jpg...img20.jpg;.....」 . OnClickItem がクリックされたアイテム (選択されたフォルダー) からすべての画像をロードするときに、AssetManager を使用してアセット内のすべてのフォルダーの名前を持つ ListView を持っています。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

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.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 に答える