1

我想创建一个对话框,它会出现并且一个人可以选择八个选项之一。所以我发现,最好的将是“警报对话框”类。我知道,如何用这个类创建一个对象,它显示一个可供选择的文本选项列表。但我决定,现在显示文本选项,但图像,所以我创建了这样的东西:

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 回答