繁体   English   中英

如何按 JSON 中的值设置 Spinner 的选定项目?

[英]How to set selected item of Spinner by value in JSON?

我有基于 JSON 数据的微调值:

这是 Spinner 值的 JSON

{
    "taxonomy":{
        "City":[
            {
                "city_id":12,
                "name":"Jakarta"

            },
            {
                "city_id":13,
                "name":"Jakarta"
            }
        ]
    } 
}

并有 JSON 用户

{
    "taxonomy":{
        "User":[
            {
                "ID":112,
                "name":"Ray",
                "city":12

            },
            {
                "ID":113,
                "name":"Tiara",
                "city":12
            }
        ]
    } 
}

我已经在微调器中解析 json 数据

for (int i=0; i<data_city.length();i++){
    JSONObject listcity = data_city.getJSONObject(i);
    Spin_city modelcity = new Spin_kecamatandesa(
        listkec.getInt("city_id"),
        listkec.getString("name")
    );

    Str_array_kec.add(modelcity);
}

SpinnAdapter adapterspin = new SpinnAdapter(getApplicationContext(), 
    android.R.layout.simple_spinner_dropdown_item, Str_array_kec);
spn_edt_kec.setAdapter(adapterspin);

我的问题是,如何根据 JSON 用户设置所选项目(如 city_id 等于城市)?

在名为的 ArrayList 中添加城市时,请保留所需城市的索引号

str_array_kec

然后通过调用 '.setSelection()' 函数使微调器被选择到该项目,如下所示:

    spn_edt_kec.setSelection(yourDesiredCityIndex)

像这样尝试

// declear a variable named position
int position = -1; 

for (int i=0; i<data_city.length();i++){
    JSONObject listcity = data_city.getJSONObject(i);
    Spin_city modelcity = new Spin_kecamatandesa(
        listkec.getInt("city_id"),
        listkec.getString("name")
    );

    // check city_id is matching or not
    if(listcity.getInt("city_id") == user_city_id){ // here user_city_id is variable whice is assigned when parse user data iterated.
       position = i; // assign matching index to position
    }

    Str_array_kec.add(modelcity);
}

SpinnAdapter adapterspin = new SpinnAdapter(getApplicationContext(), 
    android.R.layout.simple_spinner_dropdown_item, Str_array_kec);
spn_edt_kec.setAdapter(adapterspin);

spn_edt_kec.setSelection(position); // set selected position to  your spinner.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM