根据REST服务返回的值填充Spinner

时间:2018-06-20 11:09:43

标签: android json spinner

我有一个REST方法将结果返回为“ Res:” 2“。现在我需要用值1,2填充微调器。如果REST方法将结果返回为” Res:“ 3”,则微调器值必须为1,2,3。

这是我已经实现的代码。但是微调框仅显示

的2个
Integer[] items = new Integer[]{Integer.valueOf(user2.getString("Res"))};

ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(MainActivity.this, android.R.layout.simple_spinner_item, items);
                            cboFloorLevel.setAdapter(adapter);

注意:user2是一个JSONObject

4 个答案:

答案 0 :(得分:0)

尝试

List<Integer> numbers = new ArrayList<>();

int item = Integer.valueOf(user2.getString("Res"));

for(int i=1; i<item+1; i++){
 numbers.add(i)
}


ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(MainActivity.this, 
android.R.layout.simple_spinner_item, numbers);
cboFloorLevel.setAdapter(adapter);

答案 1 :(得分:0)

尝试此代码

    int end_value = Integer.valueOf(user2.getString("Res"));
    Integer[] items = new Integer[]{end_value};
    for(int i=0;i<end_value;i++){
        items[i] = i+1;
    }

    ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(MainActivity.this, android.R.layout.simple_spinner_item, items);
    cboFloorLevel.setAdapter(adapter);

答案 2 :(得分:0)

找到了我的解决方案: 您需要从java8导入数组:

import java.util.Arrays;

然后可以将字符串转换为int,创建数组,并使用传递给Arrays.setAll()的lambda填充该数组:

int maxValue = Integer.parseInt(user2.getString("Res"));
int[] items = new int[maxValue];
Arrays.setAll(array, i -> i + 1);

ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(MainActivity.this, android.R.layout.simple_spinner_item, items); 

cboFloorLevel.setAdapter(adapter);

答案 3 :(得分:0)

我从问题中了解到json响应是否为

{"Res:"3"},您需要使用1,2,3.

填充微调器
int item = Integer.valueOf(user2.getString("Res"));

ArrayList <Integer>items = new ArrayList<>();

for(int j=1; j < item+1 ; j++){
 items.add(j);
}

ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(MainActivity.this, 
android.R.layout.simple_spinner_item, items);
cboFloorLevel.setAdapter(adapter);