Я использую компонент 3 Spinner и каждый спиннер setOnItemSelectedListener для вызова бэкэнда и установки значения в адаптерах массива, и в то же время я получаю значения на основе входных данных моего сервера.
Сначала мы вызвали webservice и установили значения в адаптере счетчика. я снова вызывал webservice, чтобы получить значения для установки в адаптер счетчика, но при получении позиции всегда -1 значение сначала два раза на вкладке на моей кнопке поиска. Я получаю в третий раз правильные настройки значений в положении адаптера счетчика.
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_spinner_item,stateList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner_state.setAdapter(dataAdapter);
spinner_state.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// calling district adapter and default loading the value for as per state adapter
getSalesCustomerDistrictList(parent.getItemAtPosition(position).toString());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
Чтобы получить значение адаптера на основе позиции.
ArrayAdapter districtAdapter = (ArrayAdapter) spinner_district.getAdapter();
int districtPosition = districtAdapter.getPosition(salesCustomerPinCodeSearch.getData().get(0).getDstrtName());
spinner_district.setSelection(districtPosition);
Первые два раза я получаю значение позиции -1 и в третий раз получаю правильные значения.