1

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

<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 允许单选和多选,但奇怪的是,我没有看到使用适配器进行多选的选项,仅用于单选。

我想我真正想要的是所有选项的外观一致,通过适配器显示单选按钮和多选复选框,这样我就可以从 Pair 中获取所选项目的 ID。

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

我觉得我在这里遗漏了一些非常基本的东西。

4

1 回答 1

1

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

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

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

稍后当您获得选定的选项时,您可以简单地获取它的标签并使用它的值。

这只是我觉得很简单的一种方法。希望这可以帮助

于 2012-04-18T19:49:50.580 回答