Динамическое использование setIcon () по умолчанию alertDialogs? - PullRequest
0 голосов
/ 04 января 2011

Есть ли способ динамически установить значок, отображаемый в стандартном диалоговом окне alertDialog, без необходимости создания пользовательского?Например, я хотел бы для следующего alertDialog, метода setIcon (), чтобы отобразить изображение, которое я предоставляю, используя переменную uri с путем, сохраненным внутри.

private void showProductInfo(){
    MyProduct myProduct= (MyProduct) myProductGoldenRetriever();
    final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Product Information");
    alertDialog.setMessage(myProduct.getMyProductInfo());
    alertDialog.setButton("Back", new DialogInterface.OnClickListener() {
       @Override
        public void onClick(DialogInterface dialog, int which) {
           showPrompt();
       }
    });
    alertDialog.setIcon(R.drawable.default_img);//<--Here Need to Provide a different image each time
    alertDialog.show();
}//endOfShowProductInfo

Возможно ли это как-то или мне нужносоздать собственный alertDialog, используя соответствующий XML-файл макета?

1 Ответ

2 голосов
/ 04 января 2011

Если я правильно вас понимаю, вы просто хотите установить значок на Drawable, созданный из Uri? Я собираюсь предположить, что MyProduct имеет getUri() метод. Если нет, просто измените его соответствующим образом:

Resources res = getResources();
BitmapDrawable icon = new BitmapDrawable(res, myProduct.getUri().toString());
alertDialog.setIcon(icon);

Класс BitmapDrawable имеет конструктор, который принимает ресурсы, и строку, представляющую путь к файлу. Если вы используете Uri, вы можете просто конвертировать его, используя toString(). Класс AlertDialog.Builder имеет перегруженный метод setIcon(), который принимает Drawable. Просто создайте свой Drawable из вашего пути, и установите его в качестве значка диалога. Это не проверено (здесь нет Eclipse), но должно работать.

...