1

作成したいのは、ダイアログが表示され、人が 8 つのオプションのいずれかを選択できるようにすることです。だから私は、最高のものはクラス「Alert Dialog」になることを発見しました。選択できるテキスト オプションのリストを表示するこのクラスを使用してオブジェクトを作成する方法はわかっています。しかし、テキストオプションではなく画像を表示することにしたので、次のようなものを作成しました。

AlertDialog.Builder builder = new AlertDialog.Builder(StartGameActivity.this);

    builder.setTitle(R.string.pickColor);

           builder.setItems(R.array.colorArray, new DialogInterface.OnClickListener() {

               public void onClick(DialogInterface dialog, int which) {
                      it's not important what is inside this function
                   }

}

しかし、アプリケーションを実行して警告ダイアログが表示されると、テキストのみが表示されます。これは、画像があるフォルダーへのパスだと思います (res/drawable-xhpi/image_name.jpeg のようなものです)。

この問題の解決策を探していましたが、役に立たないことがわかりました。ListAdapter または LayoutInflater を使用する必要があるかもしれないと読みましたが、これをどのように使用できるかわかりません。AletDialog 内で画像のリストを作成する方法を誰かに説明してもらえますか?

4

1 に答える 1

1

配列がリソース ID のリストであると仮定すると...

AlertDialog.Builder builder = new AlertDialog.Builder(StartGameActivity.this);
builder.setTitle(R.string.pickColor);
ListView lv = new ListView(getActivity());
lv.setAdapter(new ArrayAdapter<String>(getActivity(), -1) {
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Resources res = getResources();
        TypedArray colorArray = res.obtainTypedArray(R.array.colorArray);
        Drawable drawable = colorArray.getDrawable(position);
        ImageView v = new ImageView(getActivity());
        v.setImageDrawable(drawable);
        return v;
    }

    @Override
    public int getCount() {
        Resources res = getResources();
        TypedArray colorArray = res.obtainTypedArray(R.array.colorArray);
        return colorArray.length();
    }
});
lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // do click stuff
    }

});
builder.setView(lv);
于 2013-01-24T17:30:03.793 に答える