假设我有微调器,我可以从中选择项目,这些项目存储在字符串数组中,用户可以选择:
<string-array name="products_array">
<item>Sugar</item>
<item>Caster sugar</item>
<item>Salt</item>
</string-array>
我还有两个字符串数组列表,具有其他值:
<string-array name="glass">
<item>200</item>
<item>180</item>
<item>325</item>
</string-array>
和
<string-array name="tableSpoon">
<item>25</item>
<item>25</item>
<item>30</item>
</string-array>
我已经创建了微调器,这是我的 onItemSelected 方法,如您所见,该方法显示用户已选择 products_array 列表中的哪个项目(通过使用 log.i):
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selected = parent.getItemAtPosition(position).toString();
Log.i("Spinner listener", "Item selected " + selected);
}
我有一个布局文件( fragment ),其中有微调器和两个 TextView - 一个用于 glass 数组列表,一个用于 tableSpoon 数组列表。
我希望用户选择,比如说,Sugar,并让它从字符串数组玻璃中显示,相应地在我的第一个 TextView 中显示 200,并且对于 <在我的第二个 TextView 中,strong>tableSpoon 字符串数组 25。
我希望这些值以准确的顺序显示,因为它们都出现在列表中(例如,糖与 200 和 25 搭配。细砂糖与 180 和 25 等搭配)
毫无疑问,可以使用 if-else 语句,但考虑到我在所有这些列表中都会有相当多的值,我怎样才能更有效地做到这一点?
最佳答案
在 onItemSelected 方法中获取为产品数组选择的元素的位置并将其保存在像这样的变量中
int index = spinner1.getSelectedItemPosition(); // spinner1 is product spinner
然后从该位置的其他两个数组中获取值并在 TextView 中设置,如下所示
String [] array1 = getResources().getStringArray(R.array.glass);
String [] array2 = getResources().getStringArray(R.array.tablespoon);
然后在 TextView 中设置值
textview1.setText(array1[index]);
textview2.setText(array2[index]);
关于java - 根据用户选择显示 xml <array-list> 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943859/