Android: установка ListView в качестве контента Dialog программно - PullRequest
1 голос
/ 27 мая 2011

что я делаю не так? я получаю пустой диалог без содержания. код:

@Override
protected Dialog onCreateDialog(int id, Bundle b) {
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(this.LAYOUT_INFLATER_SERVICE);
    switch(id) {
        case DIALOG_COLOR_MODE:
        {
            LinearLayout layout = new LinearLayout(this);
            LinearLayout.LayoutParams lllp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            layout.setLayoutParams(lllp);

            ListView modeList = new ListView(this);
            Dialog dialog = new Dialog(this);

            TextView layoutBright = new TextView(this);
            TextView layoutNormal = new TextView(this);

            layoutBright.setText("Bright Mode");
            layoutNormal.setText("Normal Mode");

            modeList.addFooterView(layoutBright);
            modeList.addFooterView(layoutNormal);

            layout.addView(modeList);

            dialog.setContentView(layout);

            return dialog;
        }
[...]

1 Ответ

6 голосов
/ 28 мая 2011

решение:

Dialog dialog = new Dialog(this);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select Color Mode");

ListView modeList = new ListView(this);
String[] stringArray = new String[] { "Bright Mode", "Normal Mode" };
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, stringArray);
modeList.setAdapter(modeAdapter);

builder.setView(modeList);
dialog = builder.create();

но, если честно, использование AlertDialog.Builder.setItems () является гораздо лучшим решением для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...