He estado buscando en Android AlertDialog, y su fácil lo suficiente como para utilizar el setItems(…) para agregar una lista de Cadenas que se muestra.

Sin embargo, en la mayoría de los casos, usted desea una lista que muestra agradable Cadenas, pero cuando seleccionas algo de la lista que se desea que el valor real, y no la Cadena.

He sido incapaz de encontrar cómo hacerlo de una manera fácil y agradable.

Consejos? =)

final Button Button1 = (Button) findViewById(R.id.Button1);
Button1.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v) 
    {
        final CharSequence[] items = { "String 1", "String 2", "String 3" };
        //INstead of a string array, I want something like:
        //ArrayList<CustomObject> test = new ArrayList<CustomObject>(myArray);
        //And the CustomObject has a toString() and also a value. This array should in the best of worlds be the base for the list below =)

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle(LanguageHandler.GetString("Test"));
        builder.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {

                //***   I want to get the value here!   ***

                Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();
    }
});
puede usted eloborate más? lo que usted quiere?
Hey, lo siento. No vea este comentario hasta ahora. Bien, creo que es una especie de claro en el comentario anterior (el comentario en el código). Quiero que los objetos personalizados para ser añadido a la AlertDialog, donde los objetos toString()-método debe ser impresa, pero al hacer clic en me gustaría conseguir el clic objeto para ser devueltos en su lugar… =)
Mira mi respuesta, ahora la Esperanza de conseguir lo que quiere.. Solo hacer adaptador personalizado de sus objetos y establecer a su AlertDialog..
Si usted tiene el tiempo: Google I/O 2010 – El mundo de ListView.

OriginalEl autor Ted | 2011-10-18

1 Comentario

  1. 38

    Lugar de CharSequence[] items = { "String 1", "String 2", "String 3" }; puede utilizar un Custom Adapter en su Diálogo de Alerta,

    Algo como,

    AlertDialog.Builder builder = new AlertDialog.Builder(MyApp.this);
                builder.setTitle("Select");
                builder.setAdapter(adapter,
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int item) {
                                Toast.makeText(MyApp.this, "You selected: " + items[item],Toast.LENGTH_LONG).show();
                                dialog.dismiss();
                            }
                        });
                AlertDialog alert = builder.create();
                alert.show();

    Su list_row.xml archivo

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <ImageView
            android:id="@+id/icon"
            android:layout_width="48px"
            android:layout_height="48px"
            android:layout_gravity="left" />
    
        <TextView
            android:id="@+id/title"
            android:textColor="#0000FF"
            android:text=""
            android:paddingLeft="10dip"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    Y su ListAdapter algo como,

    OriginalEl autor user370305

Dejar respuesta

Please enter your comment!
Please enter your name here