我不明白R.layout或R.array在下面的代码中是什么意思,谁描述了如何用包含不同国家元素的数组填充带有下拉菜单的旋转器:
adapter = ArrayAdapter.createFromResource(this, R.array.countries, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spinnerCountry.setAdapter(adapter);
名称为" nations "位于strings.xml文件中res ->值。为什么有必要使用r.a ray来定位国家数组,为什么我不能使用findViewbyID?第二个问题是,为什么在r布局微调器称为support_simple_spinner_dropdown_item?如果我通过拖放在设计选项卡上选择旋转器,那么只有一个旋转器可以选择。
如果有人帮忙就好了。谢谢你。
我查看了Developersite并搜索了论坛。
首先,在编译时生成R
下的值。它们只是一个int
值的列表,名称类似于R.array.<name>
或R.id.<name>
,可以用作实际数组,视图或其他东西的标识符。
我认为官方文档很好地解释了正在发生的事情,但我还是要用我自己的话来解释。
为什么有必要使用r.a ray来定位国家数组,为什么我不能使用findViewbyID?
字符串数组不是View
,所以使用findViewById
没有意义。findViewById
是一个方法,它返回R.id
常量中定义的int
值所引用的View
。
R.array.countries
将只是一个引用字符串数组的int
值。要获得该id的String[]
,您可以使用Resources::getStringArray(...)
。因此,在活动的上下文中,您将执行final String[] array = getResources().getStringArray(R.array.countries);
。
为什么在R.layout中微调器叫做support_simple_spinner_dropdown_item
support_simple_spinner_dropdown_item
是布局的id。您应该了解旋转器的一些不同组件。有:
View
本身。其中只有一个,就是你在设计/布局编辑器的拖放选项中看到的。- 旋转控件打开时每一行的布局id。这是在
R.layout.simple_spinner_item
引用的layout
xml文件中定义的。 - 用于填充每行的数据。这在
R.array.countries
引用的数组中定义。