2

グーグルのドキュメントで提供されているサンプルのImageAdpaterを使用して、グリッドビューにドローアブルを入力しています。私がやろうとしているのは、グリッドビューにxmlファイル内のドローアブルの配列を入力することです。

メインアクティビティから配列にアクセスするために使用TypedArray imgs = getResources().obtainTypedArray(R.array.log_type_icons);しますが、ImageAdapterクラス内では機能しません。

配列:

<string-array name="log_type_icons">
    <item>@drawable/ic_launcher</item>
    <item>@drawable/ic_headache</item>
    <item>@drawable/ic_man</item>
    <item>@drawable/ic_woman</item>
    <item>@drawable/ic_kneel</item>
</string-array>

動作するImageAdapter:

public class ImageAdapter extends BaseAdapter {
private Context mContext;

public ImageAdapter(Context c) {
    mContext = c;

}

public int getCount() {
    return mThumbIds.length;
}

public Object getItem(int position) {
    return null;
}

public long getItemId(int position) {
    return 0;
}

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    Log.i("log tag", "gotten resources: " + mThumbIds);
    if (convertView == null) { // if it's not recycled, initialize some
                                // attributes
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(8, 8, 8, 8);
    } else {
        imageView = (ImageView) convertView;
    }

    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}

// references to our images
private Integer[] mThumbIds = { R.drawable.ic_headache,
        R.drawable.ic_kneel, R.drawable.ic_man, R.drawable.ic_woman,
        R.drawable.ic_launcher };
}

整数配列にドローアブル参照を手動で追加できることは知っていますが、メインアクティビティからもxml配列を参照しているため、コードを変更せずにxmlに追加できることが理想的です。誰かがこれについて何か洞察を持っていますか?私は何か間違ったことをしているのですか、それとも何か明らかなことを見逃していますか?

助けていただければ幸いです、ありがとう

4

2 に答える 2

1

「getResources().obtainTypedArray(R.array.log_type_icons);」を使用して、この問題を解決しました。メインアクティビティで配列を取得し、アダプター内で「getResources()」を使用する代わりに、それをイメージアダプターに渡しました

于 2012-11-28T02:42:31.603 に答える
0

これはあなたの質問に似たスレッドだと思います。これをチェックしてください。

ここでは、ドローアブルのカスタム配列を使用しました。代わりにリソースのドローアブル配列を試すことができます

于 2012-11-27T04:07:44.043 に答える