Пользовательские объекты в списке AlertDialog; как получить отображаемую строку, а затем фактическое значение?

Я смотрел Android AlertDialog, и его достаточно просто использовать setItems (...) для добавления списка строк, которые должны быть показано.

Однако в большинстве случаев вам нужен список с красивыми строками, но при выборе чего-либо из списка вам нужно фактическое значение, а не строку.

Я не мог найти, как сделать это простым и приятным способом.

Советы? =)

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();
    }
});
13
задан Ted 18 October 2011 в 17:14
поделиться