2017-10-10 83 views
0

我有代码从JSON数据呼叫Spinner,并显示数据Toast当数据选择,但我想从JSON采取第二种数据,检索2倍的值与Retrofit2例如I型选择“许可证”它会显示代码“100” 吐司(这将是我保存到TextView如何从微调在Android

JSON:

{ 
    "total_results": "3", 
    "value": 1, 
    "status": true, 
    "result": [ 
     { 
      "GroupCode": "I", 
      "Code": "100", 
      "Type": "PERMIT", 
      "MaxTotalReq": "0", 
      "MinRequest": null 
     } 
    ] 
} 

到目前为止,我已经试过,显示 “许可证” 从JSON

leaveType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      String selected = parent.getItemAtPosition(position).toString(); 
      Toast.makeText(context, "Choose " + selected, Toast.LENGTH_SHORT).show(); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
     } 
    }); 

结果与响应

private void initSpinnerType(){ 
     RetrofitInterface api = RetrofitClient.getClient().create(RetrofitInterface.class); 
     Call<LeaveTypeResponse> call = api.getDataPermit(); 
     call.enqueue(new Callback<LeaveTypeResponse>() { 
      @Override 
      public void onResponse(Call<LeaveTypeResponse> call, Response<LeaveTypeResponse> response) { 
       if (response.isSuccessful()) { 
        List<LeaveType> leaveTypeItems = response.body().getResult(); 
        for (int i = 0; i < leaveTypeItems.size(); i++){ 
         String Code = leaveTypeItems.get(i).getCode(); // I want to show this when Selected 
         String leaveType = leaveTypeItems.get(i).getType(); 
         listSpinner.add(leaveType); 
        } 
        listSpinner.add(0, "- SELECT TYPE -"); 

        adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, listSpinner); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        leaveType.setAdapter(adapter); 

       } else { 
        Toast.makeText(context, "FAILED", Toast.LENGTH_SHORT).show(); 
       } 
      } 
      @Override 
      public void onFailure(Call<LeaveTypeResponse> call, Throwable t) { 
       t.printStackTrace(); 
       Toast.makeText(context, "CAN'T CONNECT", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 

如何设置可变CodeOnSelectedItem

[编辑]

String selected = parent.getItemAtPosition(position).toString();

此代码显示与值“允许”的leaveType变量I的值需要该选择的显示从代码的变量具有值“100”

+0

你必须在转码的所有列表? – sushildlh

+0

微调器中的代码列表是什么? – Aldan

+0

你的微调值是什么? – sushildlh

回答

1

在回信:

private void initSpinnerType(){ 
    RetrofitInterface api = RetrofitClient.getClient().create(RetrofitInterface.class); 
    Call<LeaveTypeResponse> call = api.getDataPermit(); 
    call.enqueue(new Callback<LeaveTypeResponse>() { 
     @Override 
     public void onResponse(Call<LeaveTypeResponse> call, Response<LeaveTypeResponse> response) { 
      if (response.isSuccessful()) { 
       List<LeaveType> leaveTypeItems = response.body().getResult(); 
       for (int i = 0; i < leaveTypeItems.size(); i++){ 
        String Code = leaveTypeItems.get(i).getCode(); // I want to show this when Selected 
        String leaveType = leaveTypeItems.get(i).getType(); 
        listSpinner.add(leaveType); 
        // Add your code into an separate ArrayList 
        listCode.add(code); 
       } 
       listSpinner.add(0, "- SELECT TYPE -"); 

       adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, listSpinner); 
       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       leaveType.setAdapter(adapter); 

      } else { 
       Toast.makeText(context, "FAILED", Toast.LENGTH_SHORT).show(); 
      } 
     } 
     @Override 
     public void onFailure(Call<LeaveTypeResponse> call, Throwable t) { 
      t.printStackTrace(); 
      Toast.makeText(context, "CAN'T CONNECT", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

监听:

leaveType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     // position -1 because in listspinner we add an extra String at 0 index 
     String selectedCode=listCode.get(--position); 
     String selected = parent.getItemAtPosition(position).toString(); 
     Toast.makeText(context, "Choose " + selectedCode, Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 
    } 
}); 
+0

嗨,谢谢你的答案。但是当Activity第一次自动打开时,默认的微调是**(“ - SELECT TYPE - ”)** **(“ - SELECT TYPE - ”)**如果打开“Toast”内容为“100”在Index为1时,但当索引为0 Toast时,问题出现在String selectedCode = listCode.get( - position);如果位置是0,则' – Aldan

+0

设置条件,然后不显示吐司。 – ved

+0

是的,这是真的,但直接到** 101 **的代码,请参阅我上面的'JSON POJO'。所以'代码** ** 100 **在通过 – Aldan

1

创建一个存储代码和leavetype类并将其添加到列表listSpinner

class Data{ 
    String code; 
    String leaveType; 
    public Data(String code,String leaveType){ 
     this.code=code; 
this.leavetype=leavetype; 
} 

public String getCode(){ 
return code; 
} 

在initSpinnerType(做出改变),如下

ArrayList<String> codeList=new ArrayList<String>(); 


ArrayList<String> leaveList=new ArrayList<String>(); 

private void initSpinnerType(){ 
     RetrofitInterface api = RetrofitClient.getClient().create(RetrofitInterface.class); 
     Call<LeaveTypeResponse> call = api.getDataPermit(); 
     call.enqueue(new Callback<LeaveTypeResponse>() { 
      @Override 
      public void onResponse(Call<LeaveTypeResponse> call, Response<LeaveTypeResponse> response) { 
       if (response.isSuccessful()) { 
        List<LeaveType> leaveTypeItems = response.body().getResult(); 
codeList.clear(); 
leaveList.clear(); 
        for (int i = 0; i < leaveTypeItems.size(); i++){ 

        codeList.add(leaveTypeItems.get(i).getCode()); 
leaveList.add(leaveTypeItems.get(i).getType()); 
         listSpinner.add(leaveList); 
        } 
        listSpinner.add(0, "- SELECT TYPE -"); 

        adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, listSpinner); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        leaveType.setAdapter(adapter); 

       } else { 
        Toast.makeText(context, "FAILED", Toast.LENGTH_SHORT).show(); 
       } 
      } 
      @Override 
      public void onFailure(Call<LeaveTypeResponse> call, Throwable t) { 
       t.printStackTrace(); 
       Toast.makeText(context, "CAN'T CONNECT", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 

现在访问代码THIK这样的:

leaveType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     String selected = parent.getItemAtPosition(position); 
String code=codeList.get(position); 
     Toast.makeText(context, "Choose " + code, Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 
    } 
}); 
+0

它不适用于我 – Aldan

+0

我可以得到您使用此代码得到的错误 –

+0

让它做出一些改变,请做同样的事情,它一定会工作 –