2 счетчика: заполнить второй счетчик из идентификатора первого счетчика, выбранного с помощью Retrofit - PullRequest
2 голосов
/ 05 апреля 2019

Привет, я работаю с моим Android, у меня есть два счетчика и использую модификацию для заполнения счетчиков.Мне удается заселить первого прядильщика.Но я не знаю, как заполнить мой второй счетчик под идентификатором, выбранным из первого счетчика.Я использую контроллер остатка codeigniter для передачи идентификатора и хочу получить его, используя модификацию для второго счетчика, но я не знаю, как это сделать?Пожалуйста, помогите мне.

Я уже создал 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();

ApiInterface

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;
}

}

Первый спиннер для получения всех данных.Я пытаюсь выбрать идентификатор для заполнения второго счетчика из адаптера.

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());
        }
    });

Первый адаптер адаптера Spinner с OnItemSelectedListner, что мне нужна помощь с методом, который должен быть?

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 с id 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}

Пожалуйста, помогите и спасибо

1 Ответ

3 голосов
/ 05 апреля 2019

Заменить

@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.

...