java - 当用户从微调器中单击一个项目时,它应该显示另一个项目数据将从 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)
{
}
});
}
}
}
解决方案
你想在另一个视图中显示州名吗?
推荐阅读
- c# - EF Core 继承问题 (HasDiscriminator)
- javascript - 按类名选择时如何使用 JavaScript 在子节点上查找某些文本
- sql - SQL - REST - 使用友好的 ID 存储和检索数据
- reporting-services - SSRS 父行组用日期时间留下空格
- dynamic - Flutter - 创建动态数量的文本编辑控制器
- function - 定义 Keras 函数
- ruby - 在 Dashing 中测试工作
- python - WSHttpBinding:Entropy.BinarySecret 在消息加密中的作用
- ios - 如何从 Firebase-Database 树更新最新条目?
- docker - 如何杀死 docker 进程?