Создайте MyModel
вот так
public class MyModel
{
String cartype_id,type,rate_type,rate_in;
public String getCartype_id() {
return cartype_id;
}
public void setCartype_id(String cartype_id) {
this.cartype_id = cartype_id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getRate_type() {
return rate_type;
}
public void setRate_type(String rate_type) {
this.rate_type = rate_type;
}
public String getRate_in() {
return rate_in;
}
public void setRate_in(String rate_in) {
this.rate_in = rate_in;
}
}
Чем создайте ArrayList
вашего класса модели
ArrayList<MyModel> arrayList = new ArrayList<>();
Выполните синтаксический анализ вашего json следующим образом
try {
JSONArray jsonArray =
response.getJSONArray("car_rate");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj = jsonArray.getJSONObject(i);
MyModel myModel= new MyModel();
myModel.setCartype_id(obj.getString("cartype_id"));
myModel.setType(obj.getString("type"));
myModel.setRate_in(obj.getString("rate_type"));
myModel.setRate_in(obj.getString("rate_in"));
arrayList.add(myModel);
}
} catch (JSONException e) {
e.printStackTrace();
}
Теперь создайте собственный адаптер, подобный этому
class SpinnerAdapter extends ArrayAdapter<MyModel> {
private ArrayList<MyModel> myarrayList;
SpinnerAdapter(Context context, int textViewResourceId, ArrayList<MyModel> modelArrayList) {
super(context, textViewResourceId, modelArrayList);
this.myarrayList = modelArrayList;
}
@Override
public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
return getCustomView(position, parent);
}
@Nullable
@Override
public MyModel getItem(int position) {
return myarrayList.get(position);
}
@Override
public int getCount() {
int count = myarrayList.size();
//return count > 0 ? count - 1 : count;
return count;
}
@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
return getCustomView(position, parent);
}
private View getCustomView(int position, ViewGroup parent) {
MyModel model = getItem(position);
View spinnerRow = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);
TextView label = spinnerRow.findViewById(android.R.id.text1);
label.setText(String.format("%s", model != null ? model.getType() : ""));
return spinnerRow;
}
}
Теперь установите адаптер в свой счетчик следующим образом
SpinnerAdapter adapter = new SpinnerAdapter(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, arrayList);
mySpinner.setAdapter(adapter);
Теперь получите выбранный элемент из своего счетчика следующим образом
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
MyModel myModel=(MyModel) parent.getSelectedItem();
Log.e("DATA",myModel.getCartype_id());
Log.e("DATA",myModel.getRate_in());
Log.e("DATA",myModel.getRate_type());
Log.e("DATA",myModel.getType());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
SAMPLE CODE
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
JSONArray jsonArray =
response.getJSONArray("car_rate");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj = jsonArray.getJSONObject(i);
MyModel myModel= new MyModel();
myModel.setCartype_id(obj.getString("cartype_id"));
myModel.setType(obj.getString("type"));
myModel.setRate_in(obj.getString("rate_type"));
myModel.setRate_in(obj.getString("rate_in"));
arrayList.add(myModel);
}
SpinnerAdapter adapter = new SpinnerAdapter(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, arrayList);
mySpinner.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
MyModel myModel=(MyModel) parent.getSelectedItem();
Log.e("DATA",myModel.getCartype_id());
Log.e("DATA",myModel.getRate_in());
Log.e("DATA",myModel.getRate_type());
Log.e("DATA",myModel.getType());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}