Android AlertDialog项目选择

时间:2014-04-15 15:54:41

标签: java android user-interface interface alertdialog

我有一个GUI接口,方法public Item selectItem(Item[] items);返回其中一个项目;我在我的Activity中实现了这个接口,并使用了一个AlertDialog,让用户选择一个Item。这是我的代码:

private Item tempItem;

@Override
    public Item selectItem(final Item[] items) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Select an Item");
        builder.setItems(toStringArray(items), new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int choice) {
                tempItem = items[choice];
            }

        });
        builder.setCancelable(false);
        builder.show();
        return tempItem;
    }

tempItem是一个支持变量,因为我无法返回onClick()方法中的值。问题是该方法返回null,因为tempItem不是喷射设置。有没有更好的解决方案来使用AlertDialog实现此方法?

1 个答案:

答案 0 :(得分:1)

我将为您的类实现一个单击侦听器,允许您将onClick用作类方法,从而使用它的变量。

public class YourClass extends Whatever implements DialogInterface.OnClickListener{
    private item;
    private Item[] items;
    private AlertDialog.Builder builder1;
    private AlertDialog.Builder builder2;

    @Override
    public Item selectItem(final Item[] items) {
        this.items = items;
        AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
        builder1.setTitle("Select an Item");
        builder1.setItems(toStringArray(items), new DialogInterface.OnClickListener(this));
        builder1.setCancelable(false);
        builder1.show();

        return item;
    }

    @Override
    protected void onClick(DialogInterface dialog, int choice){
        if(dialog.equals(builder1)
            item = items[choice];
        else if(dialog.equals(builder2))
            // do what you want for dialog 2
    }
}

只是一个选项,但是当我过去不得不做类似的事情时,我就是这样做的。