Java 当用户单击spinner中的一个项目时,应该会显示另一个项目数据将从JSON webservice获取

Java 当用户单击spinner中的一个项目时,应该会显示另一个项目数据将从JSON webservice获取,java,android,json,drop-down-menu,android-spinner,Java,Android,Json,Drop Down Menu,Android Spinner,我已经编写了从json web服务获取数据的代码,并以微调器(下拉菜单)的方式显示。现在我想编辑微调器,就像当用户单击country时,它应该获得states值。我如何才能做到这一点 通过在google上搜索,我已经尝试并编写了从web服务获取数据的代码,并显示在微调器中,但它显示了来自web服务的全部数据,如id名称旗国。现在我想编辑它,就像单击印度一样,它应该显示印度州的值 检查 专用微调器微调器; 私有文本视图文本视图; @凌驾 创建时受保护的void(Bundle savedInstan

我已经编写了从json web服务获取数据的代码,并以微调器(下拉菜单)的方式显示。现在我想编辑微调器,就像当用户单击country时,它应该获得states值。我如何才能做到这一点

通过在google上搜索,我已经尝试并编写了从web服务获取数据的代码,并显示在微调器中,但它显示了来自web服务的全部数据,如id名称旗国。现在我想编辑它,就像单击印度一样,它应该显示印度州的值

检查

专用微调器微调器;
私有文本视图文本视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
FloatingActionButton fab=findViewById(R.id.fab);
微调器=findViewById(R.id.spinner);
textView=findViewById(R.id.text\u视图);
fab.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图){
fetchJsonDataFromUrl();
}
});
}
私有void fetchJsonDataFromUrl(){
JsonArrayRequest JsonArrayRequest=新的JsonArrayRequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
parseJson(响应);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
错误。printStackTrace();
}
});
newRequestQueue(this.add)(jsonArrayRequest);
}
私有void parseJson(JSONArray响应)
{
列表国家=新的ArrayList();
试一试{
对于(int i=0;i0){
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u下拉菜单\u项,国家/地区);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener()
{
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
Country=countries.get(位置);
String meta=“ID:”+country.getCid()+”\n名称:“+country.getName()+”\n标签:“+country.getFlag()+”\n状态:“+country.getStates()”;
setText(meta);
}
@凌驾
未选择公共无效(AdapterView父级)
{
}
});
}
}
}

是否要在另一个视图中显示州名称

我认为您应该使用自定义适配器在微调器中显示国家,因为您通过默认的
适配器中的
列表
国家,它将显示所有国家,而不只是名称。
private Spinner spinner;
private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);

 setSupportActionBar(toolbar);

    FloatingActionButton fab = findViewById(R.id.fab);
    spinner = findViewById(R.id.spinner);
    textView = findViewById(R.id.text_view);

    fab.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view) {
            fetchJsonDataFromUrl();
        }
    });
}

private void fetchJsonDataFromUrl() {

    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            parseJson(response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

    Volley.newRequestQueue(this).add(jsonArrayRequest);
}

private void parseJson(JSONArray response)
{

    List<Country> countries = new ArrayList<>();

    try {
        for (int i = 0; i < response.length(); i++) {
            JSONObject obj = response.getJSONObject(i);

            String cid = obj.getString("CID");
            String countryName = obj.getString("CName");
            String flag = obj.getString("Flag");
            String states = obj.getString("States");

            countries.add(new Country(cid, countryName, flag, states));
        }
        Spinner(countries);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

private void Spinner(final List<Country> countries) {
    if (countries.size() > 0) {
        ArrayAdapter<Country> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, countries);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Country country = countries.get(position);
                String meta = "ID: " + country.getCid() + "\nNAME: " + country.getName() + "\nFLAG: " + country.getFlag() + "\nSTATES: " + country.getStates();
                textView.setText(meta);
            }


            @Override
            public void onNothingSelected(AdapterView<?> parent)
            {

            }
        });
    }
  }
}