【问题标题】:Populate Spinner with based on value returned from REST service根据 REST 服务返回的值填充 Spinner
【发布时间】:2018-06-21 23:35:20
【问题描述】:

我有一个返回结果为“Res:”2”的 REST 方法。现在我需要使用值 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

【问题讨论】:

  • 老实说,我认为您的尝试没有任何努力。您所做的就是创建一个整数数组并用您的 json 字符串中的一个数字填充它。而已。为什么不尝试将 1 和 2 添加到该数组?

标签: android json spinner


【解决方案1】:

试试这个

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

【讨论】:

    【解决方案2】:

    试试这个代码

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

    【讨论】:

    • 更好的方法是将起始值设为 0 而不是 1,条件 i
    【解决方案3】:

    我从这个问题中了解到,如果 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);
    

    【讨论】:

      【解决方案4】:

      找到我的解决方案: 你需要从 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多