【问题标题】:Spinner subitem微调器子项
【发布时间】:2015-07-29 03:29:55
【问题描述】:

我想用具有主文本和子文本的项目填充 Spinner,就像 Android Studio 在“设计器”选项卡上构建视图时显示的那样。

到目前为止,我只能用正文填充它。

我是通过代码来实现的。使用 SimpleAdapter。

我尝试了以下但没有成功,它只是给了我相同的结果(只有正文):

    Spinner spinner = (Spinner) findViewById(R.id.mySpinner);

    List<Map<String, String>> itens = new ArrayList<>();

    Map<String, String> item = new HashMap<>(2);
    item.put("text", "MAIN TEXT");
    item.put("subText", "SUB TEXT");
    itens.add(item);

    SimpleAdapter adapter = new SimpleAdapter(spinner.getContext(), itens,
            android.R.layout.simple_spinner_dropdown_item,
            new String[]{"text", "subText"},
            new int[]{android.R.id.text1, android.R.id.text2}
    );

    // i am not sure what this does
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner.setAdapter(adapter);

【问题讨论】:

  • 您想要两个 TextView 仅在下拉列表上,还是在 Spinner 本身上?
  • 你解决了这个问题吗? @PedroHenrique
  • @sivag1,我最终放弃了这个并一直在使用 Phonegap。但是,我确信 Von Iobro 的回答是正确的。我会等到有人确认后再将其标记为答案。

标签: java android android-studio


【解决方案1】:

我遇到了同样的问题,并使用 OP 的代码作为基础来创建此解决方案:

final Spinner spinner = (Spinner)fragmentView.findViewById(R.id.spinner);
List<Map<String, String>> items = new ArrayList<Map<String, String>>();

Map<String, String> item0 = new HashMap<String, String>(2);
item0.put("text", "Browse aisles...");
item0.put("subText", "(Upgrade required)");
items.add(item0);

Map<String, String> item1 = new HashMap<String, String>(2);
item1.put("text", "Option 1");
item1.put("subText", "(sub text 1)");
items.add(item1);

Map<String, String> item2 = new HashMap<String, String>(2);
item2.put("text", "Option 2");
item2.put("subText", "(sub text 2)");
items.add(item2);

SimpleAdapter adapter = new SimpleAdapter(getActivity(), items,
        android.R.layout.simple_spinner_item, // This is the layout that will be used for the standard/static part of the spinner. (You can use android.R.layout.simple_list_item_2 if you want the subText to also be shown here.) 
        new String[] {"text", "subText"},
        new int[] {android.R.id.text1, android.R.id.text2}
);

// This sets the layout that will be used when the dropdown views are shown. I'm using android.R.layout.simple_list_item_2 so the subtext will also be shown.
adapter.setDropDownViewResource(android.R.layout.simple_list_item_2);

spinner.setAdapter(adapter);

您还可以将android.R.layout.simple_spinner_item 和/或android.R.layout.simple_list_item_2 替换为您自己的自定义视图(通常位于您的layout 文件夹中)。

这是比PhoneGap 更好的解决方案!! :D

【讨论】:

    【解决方案2】:

    您必须创建一个自定义 ArrayAdapter,该 ArrayAdapter 为您的 Spinner 下拉菜单创建一个自定义视图。这个链接给出了一个很好的例子:How to customize the Spinner dropdown view

    【讨论】:

      猜你喜欢
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多