Текущее значение EditText не передается в функцию из onCreate () - PullRequest
0 голосов
/ 26 апреля 2020

Я создаю android приложение, которое отображает статистику COVID19 для Индии, я получаю статистику в формате JSON из https://api.covid19india.org/data.json, этот API также содержит данные отдельных состояний

Ниже приведен фрагмент массива Json (содержит json объектов, представляющих каждое состояние), который я запрашиваю

enter image description here

как из Сейчас я отображаю все данные (все состояния) за один раз на моем экране, однако я хочу дать название состояния в качестве входных данных и отображать статистику только этого состояния. Например. на рисунке ниже вместо образца я хочу написать название штата, и статистика этого состояния должна отображаться при нажатии кнопки.

enter image description here

Вот код mainActivity. java, я использую библиотеку залпов для извлечения данных из 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 (), я ничего не получаю, почему это происходит, как реализовать вышеописанное?

1 Ответ

1 голос
/ 26 апреля 2020

Ваше значение EditText обновлено и должно быть зафиксировано после нажатия кнопки.

parse.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            value = text.getText().toString();
            jsonParse(value);
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...