Я разрабатываю одно приложение, в котором есть один счетчик. Я разбираю 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 ответ
Один из простых способов - создать фиктивный объект 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
, покажите пользователю тост для выбора страны.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.