AlertDialog适配器上的自定义行背景颜色

时间:2013-10-19 15:26:50

标签: android alertdialog

我正在尝试使用ArrayAdapter创建一个AlertDialog,以显示用户选择表单的项目列表(单选)。但是,我想显示之前选择的项目。由于选择项目会自动关闭对话框,我的想法是为之前选择的项目设置自定义背景颜色。下面是我希望实现的模型:

enter image description here

我目前的代码是:

private void showCustomAlert(int alertNumber, int parentTaskId) {
    Log.w(LOGTAG, showCustomAlert);         
    int alertNumberID = Integer.parseInt(task1_id);
    if (alertNumber==2) alertNumberID = Integer.parseInt(task2_id);
    else if (alertNumber==3) alertNumberID = Integer.parseInt(task3_id);
    else if (alertNumber==4) alertNumberID = Integer.parseInt(task4_id);

    AlertDialog.Builder builderSingle = new AlertDialog.Builder(thisActivity);
    builderSingle.setIcon(R.drawable.icon);
    builderSingle.setTitle("Select Task:");


    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(thisActivity,
            android.R.layout.select_dialog_singlechoice);
    for (int i=0; i<taskList.size(); i++) {
        BT_item tmpItem = taskList.get(i);
        if (BT_strings.getJsonPropertyValue(tmpItem.getJsonObject(),"task_parent","").equalsIgnoreCase(parentTaskId + ""))
            arrayAdapter.add(BT_strings.getJsonPropertyValue(tmpItem.getJsonObject(),"task_name",""));
    }

    builderSingle.setNegativeButton("cancel",
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });

    builderSingle.setAdapter(arrayAdapter,
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int taskSelected) {
                    Log.w(LOGTAG, "task selected"); 

                }
            });
    builderSingle.show();

}

1 个答案:

答案 0 :(得分:2)

试试这个..而不是使用buildSingle.setAdapter在行下面

                builderSingle
                    .setCancelable(true)
                    .setSingleChoiceItems(display_array, selected_pos, new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog1, int pos) {
                            // TODO Auto-generated method stub

                            selected_pos = pos; 

                            dialog.cancel();
                        }
                    })

display_array是您在数组中的对话框中显示的内容..