1

ユーザーがフォームを選択するための項目のリストを表示するために、ArrayAdapter を使用して AlertDialog を作成しようとしています (単一選択)。ただし、以前に選択されたアイテムを表示したいと思います。アイテムを選択すると自動的にダイアログが閉じられるので、以前に選択したアイテムにカスタムの背景色を設定することを考えました。以下は、私が達成したいと考えているもののモックアップです。

ここに画像の説明を入力

私が現在持っているコードはこれです:

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();

}
4

1 に答える 1

2

これを試してください.. builderSingle.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 は、配列内のダイアログに表示するアイテムです。

于 2013-10-19T16:05:05.360 に答える