AlertDialog vs Spinner vs ListView

时间:2012-04-18 19:24:59

标签: android android-layout android-widget

我有一个我认为是一个简单的Android UI设计问题,但我已经在圈子里走了几天。我有一个REST服务,我正在从一个Android应用程序的表单中下载XML并显示XML。我有一个网页建立,我用android,相同的选项,相同的URL发送到REST服务,无论是从Android或网页模仿这个。使用HTML,我可以轻松地为各种id / display项创建复选框组和radiobutton / dropdown,例如,我可以将行星选项显示为:

<select name="planet"><option value="0">Mercury</option></select>

我想在android中做类似的事情,我有一对值,一个是id,另一个是用户友好的文本。所以我决定用android.util.Pair创建一个适配器:

  public class PairView extends Pair<String, String> {
    public PairView(String first, String second) {
      super(first, second);
    }

    public String toString() {
      return second;
    }
  }

  public class PairAdapter extends ArrayAdapter<PairView> {
  }

所以现在我可以将我的id放在pair.first中,以及在pair.second中向用户显示的内容。

我的问题在于,其中一些选项将是单选,一些将是多选。在html中,这不是问题,只需使用复选框组进行多项选择,单选选项使用单选按钮/下拉菜单。然而,在Android中,似乎并非如此直截了当。我尝试使用Spinners作为适配器,但Spinner似乎只允许单一选择。 AlertDialog.Builder允许单选和多选,但奇怪的是我没有看到使用适配器进行多选的选项,仅用于单选。

我想我真正想要的是对我的所有选项进行一致的查看,通过适配器显示单个选项的单选按钮和多选项的复选框,这样我就可以从对中获取所选项目的ID。 / p>

我应该使用什么方法?一个自定义微调器,其中添加了用于多选的代码? AlertDialog.Builder以某种方式让它使用适配器进行多选?只需创建一个普通的Alert并将ListView包装在其中?另一种选择(希望)更简单?

我觉得我在这里缺少一些非常基本的东西。

1 个答案:

答案 0 :(得分:1)

我在一个应用程序中遇到了类似的情况,所以我会分享我选择的内容。我有不同类型的问题,取决于我删除并添加了我的活动中的东西。对于单选按钮,我使用了元素。对于多项选择题,我想要一个基于复选框的视图,所以我在布局中添加了一个空格,并在代码中添加了CheckBox。

对于标题和值,对于单选按钮和复选框,您可以通过setText设置显示文本,并将任何对象/值添加为标记。所以我以前做的就是这样:

CheckBox option = new CheckBox(MyActivity.this);
option.setText("Option 1");
option.setTag(10);

稍后当您获得所选选项时,您只需获取其标记并使用其值即可。

这只是一种方法,我发现这很简单。希望这有帮助