2 个微调器:从使用 Retrofit 选择的第一个微调器 ID 填充第二个微调器
2 Spinners: Populate second spinner from first spinner id selected using Retrofit
您好,我在使用我的 android,我有两个微调器并使用改装来填充我的微调器。我设法填充第一个微调器。但我不知道如何让我的第二个微调器填充在第一个微调器的 id selected 下。我正在使用 codeigniter rest controller 传递 id 并想使用第二个微调器的改造来检索它,但我不知道该怎么做?请帮助我。
我已经通过传递 id 创建了 Rest Controller。已经创建了 ApiInterface。和豆子来获取详细信息数据。第一个微调器工作正常。
声明
classSpinner = (Spinner) findViewById(R.id.classSpinner);
divSpinner = (Spinner) findViewById(R.id.divSpinner);
classSpinner.setAdapter(mAdapter);
mApiInterface = ApiClient.getClient().create(ApiInterface.class);
getAllProvinsi();
Api接口
public interface ApiInterface {
//first spinner
@GET("Testpage/provinsi")
Call<GetProvinsi> getProvinsi();
//second spinner that I needed how to pass the id? and get data by id selected from first spinner
@GET("Testpage/kotabyprovid/provinsi_id/")
Call<GetKota> getKota();
}
GetProvinsi(第一个微调器)
public class GetProvinsi {
@SerializedName("result")
List<Provinsi> listDataProvinsi;
public List<Provinsi> getListDataProvinsi() {
return listDataProvinsi;
}
public void setListDataProvinsi(List<Provinsi> listDataProvinsi) {
this.listDataProvinsi = listDataProvinsi;
}
}
GetKota(第二个旋转器)
public class GetKota {
@SerializedName("result")
List<Kota> listDataKota;
public List<Kota> getListDataKota() {
return listDataKota;
}
public void setListDataKota(List<Kota> listDataKota) {
this.listDataKota = listDataKota;
}
}
第一个获取所有数据的微调器。我正在尝试 select id 从适配器填充第二个微调器。
private void getAllProvinsi() {
Call<GetProvinsi> kontakCall = mApiInterface.getProvinsi();
kontakCall.enqueue(new Callback<GetProvinsi>() {
@Override
public void onResponse(Call<GetProvinsi> call, Response<GetProvinsi>
response) {
List<Provinsi> ProvinsiList = response.body().getListDataProvinsi();
Log.d("Retrofit Get", "Jumlah data Kontak: " +
String.valueOf(ProvinsiList.size()));
//mAdapter = new KontakAdapter(KontakList, getBaseContext());
mAdapter = new ProvinsiAdapter(ProvinsiList, getBaseContext(), new ProvinsiAdapter.DetailsAdapterListener() {
@Override
public void classOnClick(View v, int position) {
//showClass(mTrainDetails, position);// do something or navigate to detailed classes
}
@Override
public void daysOnClick(View v, int position) {
//showDays(movieList, position);// do something or navigate to running days
}
});
classSpinner.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<GetProvinsi> call, Throwable t) {
Log.e("Retrofit Get", t.toString());
}
});
第一个使用 OnItemSelectedListner 实现的 Spinner 适配器,我需要有关该方法的帮助?
public class ProvinsiAdapter extends BaseAdapter implements AdapterView.OnItemSelectedListener {
private LayoutInflater inflater;
List<Provinsi> mProvinsiList;
public ProvinsiAdapter.DetailsAdapterListener onClickListener;
public ProvinsiAdapter(List<Provinsi> provinsiList, Context context, ProvinsiAdapter.DetailsAdapterListener listener) {
inflater = LayoutInflater.from(context);
this.mProvinsiList = provinsiList;
this.onClickListener = listener;
}
public int getCount() {
// TODO Auto-generated method stub
return mProvinsiList.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView == null){
convertView = inflater.inflate(R.layout.lsv_provinsi_list, null);
holder = new ViewHolder();
holder.txtMenuName = (TextView) convertView.findViewById(R.id.tv_namaProv);
holder.txtQuantity = (TextView) convertView.findViewById(R.id.tv_idProv);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.txtMenuName.setText(mProvinsiList.get(position).getNamaProvinsi());
holder.txtQuantity.setText(String.valueOf(mProvinsiList.get(position).getId()));
return convertView;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//Please help what should I put in here to populate second spinner
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
static class ViewHolder {
TextView txtMenuName, txtQuantity, txtPrice;
}
//region Interface Details listener
public interface DetailsAdapterListener {
void classOnClick(View v, int position);
void daysOnClick(View v, int position);
}
}
JSON 第二个微调器 Testpage/kotabyprovid/provinsi_id/1 的结果
{"result":[{"id_kota":"17","provinsi_id":"1","nama_kota":"Badung"},{"id_kota":"32","provinsi_id":"1","nama_kota":"Bangli"},{"id_kota":"94","provinsi_id":"1","nama_kota":"Buleleng"},{"id_kota":"114","provinsi_id":"1","nama_kota":"Denpasar"},{"id_kota":"128","provinsi_id":"1","nama_kota":"Gianyar"},{"id_kota":"161","provinsi_id":"1","nama_kota":"Jembrana"},{"id_kota":"170","provinsi_id":"1","nama_kota":"Karangasem"},{"id_kota":"197","provinsi_id":"1","nama_kota":"Klungkung"},{"id_kota":"447","provinsi_id":"1","nama_kota":"Tabanan"}],"0":200}
请帮忙,谢谢
替换
@GET("Testpage/kotabyprovid/provinsi_id/")
Call<GetKota> getKota();
和
@GET("Testpage/kotabyprovid/provinsi_id/{prov_id}")
Call<GetKota> getKota(@Path("prov_id") int provId);
现在您可以将 id 传递给该方法,改造将负责将 provId
传递给 URL 路径。
您好,我在使用我的 android,我有两个微调器并使用改装来填充我的微调器。我设法填充第一个微调器。但我不知道如何让我的第二个微调器填充在第一个微调器的 id selected 下。我正在使用 codeigniter rest controller 传递 id 并想使用第二个微调器的改造来检索它,但我不知道该怎么做?请帮助我。
我已经通过传递 id 创建了 Rest Controller。已经创建了 ApiInterface。和豆子来获取详细信息数据。第一个微调器工作正常。
声明
classSpinner = (Spinner) findViewById(R.id.classSpinner);
divSpinner = (Spinner) findViewById(R.id.divSpinner);
classSpinner.setAdapter(mAdapter);
mApiInterface = ApiClient.getClient().create(ApiInterface.class);
getAllProvinsi();
Api接口
public interface ApiInterface {
//first spinner
@GET("Testpage/provinsi")
Call<GetProvinsi> getProvinsi();
//second spinner that I needed how to pass the id? and get data by id selected from first spinner
@GET("Testpage/kotabyprovid/provinsi_id/")
Call<GetKota> getKota();
}
GetProvinsi(第一个微调器)
public class GetProvinsi {
@SerializedName("result")
List<Provinsi> listDataProvinsi;
public List<Provinsi> getListDataProvinsi() {
return listDataProvinsi;
}
public void setListDataProvinsi(List<Provinsi> listDataProvinsi) {
this.listDataProvinsi = listDataProvinsi;
}
}
GetKota(第二个旋转器)
public class GetKota {
@SerializedName("result")
List<Kota> listDataKota;
public List<Kota> getListDataKota() {
return listDataKota;
}
public void setListDataKota(List<Kota> listDataKota) {
this.listDataKota = listDataKota;
}
}
第一个获取所有数据的微调器。我正在尝试 select id 从适配器填充第二个微调器。
private void getAllProvinsi() {
Call<GetProvinsi> kontakCall = mApiInterface.getProvinsi();
kontakCall.enqueue(new Callback<GetProvinsi>() {
@Override
public void onResponse(Call<GetProvinsi> call, Response<GetProvinsi>
response) {
List<Provinsi> ProvinsiList = response.body().getListDataProvinsi();
Log.d("Retrofit Get", "Jumlah data Kontak: " +
String.valueOf(ProvinsiList.size()));
//mAdapter = new KontakAdapter(KontakList, getBaseContext());
mAdapter = new ProvinsiAdapter(ProvinsiList, getBaseContext(), new ProvinsiAdapter.DetailsAdapterListener() {
@Override
public void classOnClick(View v, int position) {
//showClass(mTrainDetails, position);// do something or navigate to detailed classes
}
@Override
public void daysOnClick(View v, int position) {
//showDays(movieList, position);// do something or navigate to running days
}
});
classSpinner.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<GetProvinsi> call, Throwable t) {
Log.e("Retrofit Get", t.toString());
}
});
第一个使用 OnItemSelectedListner 实现的 Spinner 适配器,我需要有关该方法的帮助?
public class ProvinsiAdapter extends BaseAdapter implements AdapterView.OnItemSelectedListener {
private LayoutInflater inflater;
List<Provinsi> mProvinsiList;
public ProvinsiAdapter.DetailsAdapterListener onClickListener;
public ProvinsiAdapter(List<Provinsi> provinsiList, Context context, ProvinsiAdapter.DetailsAdapterListener listener) {
inflater = LayoutInflater.from(context);
this.mProvinsiList = provinsiList;
this.onClickListener = listener;
}
public int getCount() {
// TODO Auto-generated method stub
return mProvinsiList.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView == null){
convertView = inflater.inflate(R.layout.lsv_provinsi_list, null);
holder = new ViewHolder();
holder.txtMenuName = (TextView) convertView.findViewById(R.id.tv_namaProv);
holder.txtQuantity = (TextView) convertView.findViewById(R.id.tv_idProv);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.txtMenuName.setText(mProvinsiList.get(position).getNamaProvinsi());
holder.txtQuantity.setText(String.valueOf(mProvinsiList.get(position).getId()));
return convertView;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//Please help what should I put in here to populate second spinner
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
static class ViewHolder {
TextView txtMenuName, txtQuantity, txtPrice;
}
//region Interface Details listener
public interface DetailsAdapterListener {
void classOnClick(View v, int position);
void daysOnClick(View v, int position);
}
}
JSON 第二个微调器 Testpage/kotabyprovid/provinsi_id/1 的结果
{"result":[{"id_kota":"17","provinsi_id":"1","nama_kota":"Badung"},{"id_kota":"32","provinsi_id":"1","nama_kota":"Bangli"},{"id_kota":"94","provinsi_id":"1","nama_kota":"Buleleng"},{"id_kota":"114","provinsi_id":"1","nama_kota":"Denpasar"},{"id_kota":"128","provinsi_id":"1","nama_kota":"Gianyar"},{"id_kota":"161","provinsi_id":"1","nama_kota":"Jembrana"},{"id_kota":"170","provinsi_id":"1","nama_kota":"Karangasem"},{"id_kota":"197","provinsi_id":"1","nama_kota":"Klungkung"},{"id_kota":"447","provinsi_id":"1","nama_kota":"Tabanan"}],"0":200}
请帮忙,谢谢
替换
@GET("Testpage/kotabyprovid/provinsi_id/")
Call<GetKota> getKota();
和
@GET("Testpage/kotabyprovid/provinsi_id/{prov_id}")
Call<GetKota> getKota(@Path("prov_id") int provId);
现在您可以将 id 传递给该方法,改造将负责将 provId
传递给 URL 路径。