У меня проблема с группой спиннеров в андроид студии.Мне нужно использовать JSON по этой ссылке "104.130.222.221:1337/ubigeo" и использовать данные, чтобы заполнить 3 счетчика в следующем порядке:
Спиннер 1: Получить элемент из отдела -> Спиннер 2: Получить группыПорядка провинций по департаментам -> Спиннер 3: Получить группу округов по провинциям
При выборе элемента в Spinner1, Spinner2 должен быть заполнен.При выборе элемента в Spinner2 должно быть заполнено Spinner3.
На основе значения параметра в объекте Json.Я использую модификацию для управления вызовом и получения тела ответа. Response.Body отладочный вид
Пример данных JSON
[
{
"id": "5c69dfe0278329adcd3bc5bf",
"departamento": "01",
"provincia": "00",
"distrito": "00",
"nombre": "Amazonas"
},
{
"id": "5c69dfe0278329adcd3bc5c0",
"departamento": "01",
"provincia": "01",
"distrito": "00",
"nombre": "Chachapoyas"
},
{
"id": "5c69dfe0278329adcd3bc5c1",
"departamento": "01",
"provincia": "01",
"distrito": "01",
"nombre": "Chachapoyas"
},
...etc,etc
]
Ubigeo.java
public interface Ubigeo {
//This call give me the list of only departments
@GET("ubigeo")
Call<List<UbigeoPojo>> getDepartamentos(@Query("distrito") String dist, @Query ("provincia") String prov);
//Next to it i need to add more calls
}
search_fragment.java
public class busqueda_fragment extends Fragment {
ArrayList<Departamento> depList = new ArrayList<> ();
ArrayList<Provincia> provList = new ArrayList<> ();
ArrayList<Distrito> disList = new ArrayList<> ();
ArrayAdapter<Departamento> depAdap;
ArrayAdapter<Provincia> provAdap;
ArrayAdapter<Distrito> disAdap;
private static final String TAG = "Locales";
private static final String TAG_ERROR = "Debug: ";
private Retrofit rtUbigeo;
private Ubigeo spinnerFilter;
public busqueda_fragment() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
rtUbigeo = new Retrofit.Builder ()
.baseUrl (NEW_TEST_URL)
.addConverterFactory (GsonConverterFactory.create ())
.build ();
setDeptData();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate (R.layout.fragment_busqueda, container, false);
final Spinner spDep = (Spinner) v.findViewById (R.id.spDepartamento);
final Spinner spPro = (Spinner) v.findViewById (R.id.spProvincia);
final Spinner spDis = (Spinner) v.findViewById (R.id.spDistrito);
depAdap = new ArrayAdapter<Departamento> (getContext (), android.R.layout.simple_spinner_item, depList);
depAdap.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
depAdap.notifyDataSetChanged ();
spDep.setAdapter (depAdap);
return v;
}
private void setDeptData () {
spinnerFilter = rtUbigeo.create (Ubigeo.class);
Call<List<UbigeoPojo>> call = spinnerFilter.getDepartamentos ("00", "00");
call.enqueue (new Callback<List<UbigeoPojo>> () {
@Override
public void onResponse(Call<List<UbigeoPojo>> call, Response<List<UbigeoPojo>> response) {
if (response.isSuccessful ()) {
try {
List<UbigeoPojo> dep = response.body ();
for (int i = 0; i > dep.size (); i++) {
String Code = dep.get (i).getId ();
String d1 = dep.get (i).getDepartamento ();
String d2 = dep.get (i).getProvincia ();
String d3 = dep.get (i).getDistrito ();
String d4 = dep.get (i).getNombre ();
}
} catch (Exception e) {
Log.d (TAG_ERROR, "Hay un error");
e.printStackTrace ();
}
} else {
Log.i (TAG, "El metodo try ha fallado: " + response.errorBody ());
}
}
@Override
public void onFailure(Call<List<UbigeoPojo>> call, Throwable t) {
}
});
}
}
До сих пор мне удавалось загрузить тело ответа и получить массив json, но я не знаю, как поместить данные в счетчики
Образ изображения Response.body
3 Вид прядильщика