使用 json 数据根据第一个微调器选择填充第二个微调器
populate second spinner based on first spinner selection with json data
我有activity,它提供了一些地址注册表。
有以下区域微调器:
- 省微调
- 城市微调器
- 区微调器
- 乡村纺车
我已经有了从 JSON 获取数据的方法,这是我的目标:
"Populate the City Spinner based on selected item on Province Spinner, and same as the rest for District Spinner and Village Spinner".
由于隐私问题,我无法在此处 post 我的完整 java class 代码。
我正在使用改造 2 从 JSON 检索数据,这是我获取省份数据的方法:
private void initSpinnerProvinsi() {
apiInterface.getProvinsi()
.enqueue(new Callback<GetProvinsiResponse>() {
@Override
public void onResponse(Call<GetProvinsiResponse> call, Response<GetProvinsiResponse> response) {
if (response.isSuccessful()){
List<GetProvinsi> provinsiList = response.body().getSemuaprovinsi();
List<String> listSpinnerProvinsi = new ArrayList<>();
for (int i = 0; i < provinsiList.size(); i++){
listSpinnerProvinsi.add(provinsiList.get(i).getNama());
String idkota = provinsiList.get(i).getId();
Log.d("idkota ", idkota);
}
//set result into spinner adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
R.layout.support_simple_spinner_dropdown_item, listSpinnerProvinsi);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinner_provinsi.setAdapter(adapter);
}
else {
Log.d("onResponse: ", "gagal memuat data provinsi");
}
}
@Override
public void onFailure(Call<GetProvinsiResponse> call, Throwable t) {
Toast.makeText(mContext, "Koneksi gagal, silahkan cek koneksi internet anda",
Toast.LENGTH_SHORT).show();
}
});
}
这是我的 ProvinceSpinner setOnItemSelected 方法:
spinner_provinsi.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedName = parent.getItemAtPosition(position).toString();
//request data
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
这是我的 json 来自 postman 的 ProvinceSpinner 数据:
{
"error": false,
"message": "Berhasil mendapatkan data provinsi",
"semuaprovinsi": [
{
"id": "11",
"nama": "Aceh"
}
]
}
这是我的 json 来自 postman 的 CitySpinner 数据:
{
"error": false,
"message": "Berhasil mengambil data kabupaten",
"daftar_kecamatan": [
{
"id": "1101",
"id_prov": "11",
"nama": "Kab. Simeulue"
}
]
}
请哪位大侠指教。
谢谢。
已解决,检查此代码:
private void initSpinnerProvinsi() {
apiInterface.getProvinsi()
.enqueue(new Callback<GetProvinsiResponse>() {
@Override
public void onResponse(Call<GetProvinsiResponse> call, Response<GetProvinsiResponse> response) {
if (response.isSuccessful()){
final List<GetProvinsi> provinsiList = response.body().getSemuaprovinsi();
List<String> listSpinnerProvinsi = new ArrayList<String>();
for (int i = 0; i < provinsiList.size(); i++){
listSpinnerProvinsi.add(provinsiList.get(i).getNama());
}
//set result into spinner adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
R.layout.support_simple_spinner_dropdown_item, listSpinnerProvinsi);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinner_provinsi.setAdapter(adapter);
spinner_provinsi.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedName = parent.getItemAtPosition(position).toString();
//request data
String idkota = provinsiList.get(position).getId();
Log.d("idkota :", idkota);
if (selectedName != null)
spinner_kota.setEnabled(true);
initSpinnerKota(idkota);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
else {
Log.d("onResponse: ", "gagal memuat data provinsi");
}
}
@Override
public void onFailure(Call<GetProvinsiResponse> call, Throwable t) {
Toast.makeText(mContext, "Koneksi gagal, silahkan cek koneksi internet anda",
Toast.LENGTH_SHORT).show();
}
});
}
我有activity,它提供了一些地址注册表。 有以下区域微调器:
- 省微调
- 城市微调器
- 区微调器
- 乡村纺车
我已经有了从 JSON 获取数据的方法,这是我的目标: "Populate the City Spinner based on selected item on Province Spinner, and same as the rest for District Spinner and Village Spinner".
由于隐私问题,我无法在此处 post 我的完整 java class 代码。
我正在使用改造 2 从 JSON 检索数据,这是我获取省份数据的方法:
private void initSpinnerProvinsi() {
apiInterface.getProvinsi()
.enqueue(new Callback<GetProvinsiResponse>() {
@Override
public void onResponse(Call<GetProvinsiResponse> call, Response<GetProvinsiResponse> response) {
if (response.isSuccessful()){
List<GetProvinsi> provinsiList = response.body().getSemuaprovinsi();
List<String> listSpinnerProvinsi = new ArrayList<>();
for (int i = 0; i < provinsiList.size(); i++){
listSpinnerProvinsi.add(provinsiList.get(i).getNama());
String idkota = provinsiList.get(i).getId();
Log.d("idkota ", idkota);
}
//set result into spinner adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
R.layout.support_simple_spinner_dropdown_item, listSpinnerProvinsi);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinner_provinsi.setAdapter(adapter);
}
else {
Log.d("onResponse: ", "gagal memuat data provinsi");
}
}
@Override
public void onFailure(Call<GetProvinsiResponse> call, Throwable t) {
Toast.makeText(mContext, "Koneksi gagal, silahkan cek koneksi internet anda",
Toast.LENGTH_SHORT).show();
}
});
}
这是我的 ProvinceSpinner setOnItemSelected 方法:
spinner_provinsi.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedName = parent.getItemAtPosition(position).toString();
//request data
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
这是我的 json 来自 postman 的 ProvinceSpinner 数据:
{
"error": false,
"message": "Berhasil mendapatkan data provinsi",
"semuaprovinsi": [
{
"id": "11",
"nama": "Aceh"
}
]
}
这是我的 json 来自 postman 的 CitySpinner 数据:
{
"error": false,
"message": "Berhasil mengambil data kabupaten",
"daftar_kecamatan": [
{
"id": "1101",
"id_prov": "11",
"nama": "Kab. Simeulue"
}
]
}
请哪位大侠指教。 谢谢。
已解决,检查此代码:
private void initSpinnerProvinsi() {
apiInterface.getProvinsi()
.enqueue(new Callback<GetProvinsiResponse>() {
@Override
public void onResponse(Call<GetProvinsiResponse> call, Response<GetProvinsiResponse> response) {
if (response.isSuccessful()){
final List<GetProvinsi> provinsiList = response.body().getSemuaprovinsi();
List<String> listSpinnerProvinsi = new ArrayList<String>();
for (int i = 0; i < provinsiList.size(); i++){
listSpinnerProvinsi.add(provinsiList.get(i).getNama());
}
//set result into spinner adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
R.layout.support_simple_spinner_dropdown_item, listSpinnerProvinsi);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinner_provinsi.setAdapter(adapter);
spinner_provinsi.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedName = parent.getItemAtPosition(position).toString();
//request data
String idkota = provinsiList.get(position).getId();
Log.d("idkota :", idkota);
if (selectedName != null)
spinner_kota.setEnabled(true);
initSpinnerKota(idkota);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
else {
Log.d("onResponse: ", "gagal memuat data provinsi");
}
}
@Override
public void onFailure(Call<GetProvinsiResponse> call, Throwable t) {
Toast.makeText(mContext, "Koneksi gagal, silahkan cek koneksi internet anda",
Toast.LENGTH_SHORT).show();
}
});
}