根据用户选择显示xml <array-list>中的项目

时间:2017-05-12 17:57:09

标签: java android arrays xml

让我们说我有旋转器,我从中选择存储在字符串数组中的项目,用户可以选择:

<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);
}

我有一个布局文件(片段),其中我有微调器和两个textViews-一个用于glass array-list,另一个用于tableSpoon array-list。

我希望用户选择Sugar,并让它在我的第一个TextView中相应地显示 string-array glass 200,以及<在我的第二个TextView中强> tableSpoon字符串数组 25。

我希望这些值按照确切的顺序显示,因为它们都列在列表中(例如,Sugar与200和25一起使用.Caster sugar与180和25等相同。)

毫无疑问,可以使用if-else语句,但是给出,我将在所有这些列表中有相当多的值,我怎样才能更有效地执行此操作?

2 个答案:

答案 0 :(得分:1)

在onItemSelected方法中,获取为product数组选择的元素的位置,并将其保存在这样的变量中

int index  = spinner1.getSelectedItemPosition(); // spinner1 is product spinner

然后从其他两个数组中获取此位置的值,并在文本视图中设置,如下所示

String [] array1 = getResources().getStringArray(R.array.glass);
  String [] array2 = getResources().getStringArray(R.array.tablespoon);

然后在文字视图中设置值

 textview1.setText(array1[index]);
    textview2.setText(array2[index]);

答案 1 :(得分:0)

1。从XML读取字符串数组glasstableSpoon并将其存储到两个变量中,如下所示:

String [] glass = getResources().getStringArray(R.array.glass);
String [] tablespoon = getResources().getStringArray(R.array.tablespoon);

2。onItemSelected()方法内,获取所选项position并使用此position从数组{{1}获取value }和glass

tableSpoon

希望这会有所帮助〜