EditText的当前值未从onCreate()传递给函数

问题描述 投票:0回答:1

[我正在构建一个显示印度COVID19统计信息的android应用,我从https://api.covid19india.org/data.json获取JSON格式的统计信息,该API也包含各个州的数据,

下面是我要求的Json数组的片段(包含代表每个状态的json对象)>

enter image description here

截至目前,我一次在屏幕上显示整个数据(所有状态),但是我想提供状态名称作为输入,并仅显示该状态的统计信息,例如。在下面的图像中代替示例,我想写一个状态名称,并且必须在单击该按钮时显示该状态的统计信息。

enter image description here

这是mainActivity.java的代码,我正在使用Volley Library从API提取数据

public class MainActivity extends AppCompatActivity {
    private TextView result;
    private RequestQueue mq;
    public String value;
    int flag = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        result = findViewById(R.id.textView4);
        Button parse = findViewById(R.id.button);

        mq = Volley.newRequestQueue(this);
        EditText text = (EditText)findViewById(R.id.state_ip);
        value = text.getText().toString();

        parse.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                jsonParse(value); 
                **//How do i pass 'value' i.e the state name entered by user to jsonParse**
            }
        });
    }

    private void jsonParse(final String value) {

        Log.d("val_state",value);
        String url = "https://api.covid19india.org/data.json";
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("statewise");
                            for (int i = 0; i < jsonArray.length(); i++)
                            {
                                JSONObject st = jsonArray.getJSONObject(i);
                                String statename = st.getString("state");
                                String active = st.getString("active");
                                String confirmed = st.getString("confirmed");
                                String deaths = st.getString("deaths");
                                String recovered = st.getString("recovered");
                                if(statename.equals(value))
                                {
                                    flag= 1;
                                }

                                statename = "State : " + statename;
                                active = "Active Cases : " + active;
                                confirmed = "Confirmed Cases : " + confirmed;
                                deaths = "Total Deaths : " + deaths;
                                recovered = "Total Recovered : " + recovered;
                                if(flag==1)
                                {
                                    flag=0;
                                     result.append(statename + "\n" + String.valueOf(active) + "\n" + String.valueOf(confirmed) + "\n" + String.valueOf(deaths) + "\n" + String.valueOf(recovered) + "\n\n\n");
            } 
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
        mq.add(request);
    }
}

[这里,我想将用户输入的状态值传递给jsonParse()方法,以便我使用接收到的JSON数据检查状态名称并将其附加到TextView,但是当我这样做时,尝试将值记录在jsonParse()方法内,我什么也没得到,为什么会发生,我该如何实现以上内容?

[我正在构建一个显示印度的COVID19统计信息的android应用,我从https://api.covid19india.org/data.json获取JSON格式的统计信息,此API包含单个数据...

android json api android-layout android-volley
1个回答
1
投票

您的EditText值是更新的,必须在单击按钮后捕获。

© www.soinside.com 2019 - 2024. All rights reserved.