我有3个微调器列表。第一个将要求用户选择他拥有的车辆品牌。第二个询问用户车辆的型号,但是要正确加载端点,我需要知道所选品牌的代码。我不愿意从微调器对象中提取代码。我该怎么办?
// add items into spinner dynamically
public void addItemsOnSpinner1() {
listM = new ArrayList<>();
ApiService.getInstance().getMarcas().enqueue(new Callback<List<MarcasResponse>>() {
@Override
public void onResponse(Call<List<MarcasResponse>> call, Response<List<MarcasResponse>> response) {
spinner1 = (Spinner) findViewById(R.id.spinner1);
listM = response.body();
ArrayAdapter<MarcasResponse> adapterM = new ArrayAdapter<>(ListaVeiculosActivity.this,
android.R.layout.simple_spinner_item, listM);
adapterM.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapterM);
// after getting new data you have to notify your adapter that your data set is changed like below.
adapterM.notifyDataSetChanged();
}
@Override
public void onFailure(Call<List<MarcasResponse>> call, Throwable t) {
}
});
}
改造接口..
@GET("marcas")
Call<List<MarcasResponse>> getMarcas();
改装配置:
public class ListaMarcasAdapter extends RecyclerView.Adapter<ListaMarcasAdapter.ListaVeiculosViewHolder> {
private Context context;
private List<MarcasResponse> marcas;
public ListaMarcasAdapter(Context context, List<MarcasResponse> marcas) {
this.context = context;
this.marcas = marcas;
}
@NonNull
@Override
public ListaVeiculosViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_veiculo, parent, false);
return new ListaVeiculosViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ListaVeiculosViewHolder holder, int position) {
holder.textNomeVeiculo.setText(marcas.get(position).getName());
holder.codigo = marcas.get(position).getCodigo();
}
@Override
public int getItemCount() {
return (marcas!= null && marcas.size()>0) ? marcas.size() : 0;
}
static class ListaVeiculosViewHolder extends RecyclerView.ViewHolder{
private TextView textNomeVeiculo;
private String codigo;
public ListaVeiculosViewHolder(View itemView){
super(itemView);
textNomeVeiculo = itemView.findViewById(R.id.text_veiculo);
}
}}
我在适配器上找到了String,并将其绑定,但是我不知道如何从适配器中提取此“ String codigo”。有没有办法做到这一点?我不想在Spinner上显示“código”。我只想在Spinner上显示“名称”,并在JSON上获取名称随附的“código”。JSON如下:
[{"nome":"Acura","codigo":"1"},{"nome":"Agrale","codigo":"2"}]
没人? 😕我试图找到另一种方法,但是我找不到它