简体   繁体   中英

It is possible to put a Spinner on a Alert Dialog?

I'm trying to put a spinner on a Alert Dialog. This code is showing the dialog but the spinner has no items on it. I use the same spinner on the activity and works fine.

Java code:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = (this).getLayoutInflater();
final View update_layout = getLayoutInflater().inflate(R.layout.list_item_modificar, null);

final Spinner spinner = (Spinner) update_layout.findViewById(R.id.scantidadmodificar);
ArrayAdapter<CharSequence> adapterspinner = ArrayAdapter.createFromResource(this, R.array.items, android.R.layout.simple_spinner_item);
adapterspinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapterspinner);

builder.setTitle(R.string.modificar_title);
builder.setCancelable(false);
builder.setView(inflater.inflate(R.layout.list_item_modificar, null))
    .setPositiveButton(R.string.modificar_si, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {

                        }
                    })
        .setNegativeButton(R.string.modificar_no, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {

                        }
                    });

builder.create();
builder.show();

XML from AlertDialog:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Spinner
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:id="@+id/scantidadmodificar"
        android:spinnerMode="dropdown"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignBottom="@+id/etItem"
        android:layout_marginRight="20dp" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/etItem"
        android:hint="@string/modificar_ingresar"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_toLeftOf="@+id/scantidadmodificar"
        android:layout_toStartOf="@+id/scantidadmodificar"
        android:maxLength="20"
        android:digits="abcdefghijklmnñopqrstuvwxyz "
        android:layout_marginLeft="20dp" />

</RelativeLayout>

Actually you have two different Alert Dialog layout reference. One you are making view update_layout and other you are directly inflating in setView() And your spinner is part of first update_layout view.

So just change your code line,

builder.setView(inflater.inflate(R.layout.list_item_modificar, null))

with

builder.setView(update_layout)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM