首页 > 解决方案 > 当用户从微调器中单击一个项目时,它应该显示另一个项目数据将从 JSON Web 服务获取

问题描述

我已经编写了用于从 json Web 服务获取数据并以微调器(下拉菜单)方式显示的代码。现在我想编辑微调器,就像用户点击国家时那样,它应该获得状态值我该怎么做?

通过在谷歌上搜索,我尝试并编写了用于从 Web 服务获取数据并显示在微调器中的代码,但它显示了来自 Web 服务的整个数据,例如 id 名称标志状态现在我想编辑它,就像点击印度一样,它应该显示印度状态价值观..

检查JSON

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

            }
        });
    }
  }
}

标签: javaandroidjsondrop-down-menuandroid-spinner

解决方案


你想在另一个视图中显示州名吗?


推荐阅读