Android AlertDialog项目选择



我有一个GUI界面,方法为public Item selectItem(Item[] items);,返回其中一个项;我在"活动"中实现了这个界面,并使用了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实现此方法?

我会为您的类实现一个点击监听器,它允许您将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
    }
}

这只是一种选择,但这就是我过去不得不做类似事情时的做法。

相关内容

  • 没有找到相关文章

最新更新