Я разрабатываю одно приложение, в котором есть один счетчик. Я разбираю JSON в счетчике и устанавливаю адаптер с настраиваемым объектом. теперь у меня проблема с подсказкой. как на изображении первая страна, прибывающая в Афганистан, но в качестве подсказки должно быть указано «Выберите страну». пожалуйста, помогите мне, я застрял в этом с 2 дней. заранее спасибо.

Список mCountryList;

Private void getCountry () {ApiService countryApi = RetrofitClient.getApiService ();

    Call<JsonElement> call = countryApi.getCountry();    

    mCountryList = new ArrayList<>();

    call.enqueue(new Callback<JsonElement>() {
        @Override
        public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {


            if (response.isSuccessful()) {

                try {
                    JSONObject object = new JSONObject(response.body().toString());

                    JSONObject jsonObj = new JSONObject(object.toString());

                    JSONArray jsonArray = jsonObj.getJSONArray("data");

                    if (jsonArray.length() > 0) {

                        for (int i = 0; i < jsonArray.length(); i++) {

                            JSONObject jsonObject = jsonArray.getJSONObject(i);

                            Country countryList = new Country();

                            countryList.setId(jsonObject.getInt("id"));

                            countryList.setName(jsonObject.getString("name"));

                            countryList.setCode(jsonObject.getString("code"));

                            mCountryList.add(countryList);

                        }
                        ArrayAdapter<Country> arrayAdapter = new ArrayAdapter<Country>(getApplicationContext(),R.layout.spinner_layout, mCountryList);
                        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        mSpinnerCountry.setAdapter(arrayAdapter);

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            } else if (response.code() == 401 || response.code() == 500) {
                Toast.makeText(CreateAccountActivity.this, "Session Expired", Toast.LENGTH_SHORT).show();

            } else {
                Toast.makeText(CreateAccountActivity.this, "Something Went Wrong..!", Toast.LENGTH_SHORT).show();
            }
        }
        @Override
        public void onFailure(Call<JsonElement> call, Throwable t) {
            Toast.makeText(CreateAccountActivity.this, "Something Went Wrong..!", Toast.LENGTH_SHORT).show();
        }
    });
}[enter image description here][1]
1
Ashish Pandey 28 Июн 2020 в 18:34

1 ответ

Лучший ответ

Один из простых способов - создать фиктивный объект Country в начале и добавить его в массив с именем Select Country и заполнить другие фиктивные данные, которые могут вам понадобиться, и, нажав любую кнопку формы (при условии, что она у вас есть), вы можете проверить текущий выбранный индекс, и если это 0, то страна не выбрана. В этом случае вы можете показать тост.

Например, вот ваш обновленный блок try catch:

try {
    JSONObject object = new JSONObject(response.body().toString());
    JSONObject jsonObj = new JSONObject(object.toString());
    JSONArray jsonArray = jsonObj.getJSONArray("data");

    if (jsonArray.length() > 0) {

        Country country = new Country();
        country.setId(0);
        country.setName("Select Country");
        country.setCode(0);
        mCountryList.add(country);


        for (int i = 0; i < jsonArray.length(); i++) {

            JSONObject jsonObject = jsonArray.getJSONObject(i);

            Country country = new Country();
            country.setId(jsonObject.getInt("id"));
            country.setName(jsonObject.getString("name"));
            country.setCode(jsonObject.getString("code"));
            mCountryList.add(country);

        }
        ArrayAdapter < Country > arrayAdapter = new ArrayAdapter < Country > (getApplicationContext(), R.layout.spinner_layout, country);
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mSpinnerCountry.setAdapter(arrayAdapter);

    }
} catch (Exception e) {
    e.printStackTrace();
}

1-й элемент - это ваша подсказка, и убедитесь, что вы проверяете индекс, когда действительно хотите предпринять какое-либо действие, например, если индекс равен 0, покажите пользователю тост для выбора страны.

1
Sumit Sahoo 28 Июн 2020 в 16:16