从JSON对象Android

时间:2018-11-28 20:03:50

标签: java android arrays json

例如,我有一个JSON对象数组

"data": {
    "id": 20,
    "name" : "Car"
},
"data": {
    "id": 2,
    "name" : "Bus"
},
"data": {
    "id": 30,
    "name" : "Bike"
}

我正在从数据库中获取这些值并将其存储在共享的首选项中

SharedPreferences vehicleData = getSharedPreferences("vehicleData", Context.MODE_PRIVATE);
                    SharedPreferences.Editor vehicleEditor = vehicleData.edit();

                    vID.append(vt.get(i).getId()).append(",");
                    vName.append(vt.get(i).getTypeName()).append(",");

我的android应用中有一个微调框,其中将值显示为“汽车”,“公共汽车”,“自行车”等(从共享首选项开始)。

SharedPreferences vehicleData = getSharedPreferences("vehicleData", Context.MODE_PRIVATE);
    String ids = vehicleData.getString("vehicle_type_id", "");
    final String names = vehicleData.getString(ids, "");

    String[] singleName = names.split(",");
    String[] singleID = ids.split(",");

    typeSpinner = findViewById(R.id.vehicle_type_spinner);

    ArrayList<String> namelist = new ArrayList<>();

    for (int i = 0; i < singleName.length; i++) {
        namelist.add(singleID[i].concat(" ".concat(singleName[i])));
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, namelist);
    typeSpinner.setAdapter(adapter);

并以此方式获得微调器值

String typeName = String.valueOf(typeSpinner.getSelectedItem());

我想要做的是,当用户从微调器(例如,汽车)中选择一个值时,我想将该值的ID(即1)存储在变量中。

我想这是一个非常基本的问题,但我无法解决。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我希望这段代码可以为您提供帮助:

private void initSpinner() {
        List<Data> listOfData = new ArrayList<>();
    listOfData.add(new Data(1,"Car"));
    listOfData.add(new Data(2,"Bus"));
    listOfData.add(new Data(3,"Bike"));  

        List<String> listOfNames = new ArrayList<>(); 
        for (Data data : listOfData) {  
         listOfNames.add(data.getName()); 
        }

        spinner.setItems(listOfNames); 
        spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() { 
            @Override
            public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
                   long selectedDataId = listOfData.get(position);
                   String selectedDataName = listOfNames.get(position); 
            }
        });
}