Как установить выбранный элемент Spinner по значению в JSON? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть значение счетчика, основанное на данных JSON:

, это 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 = city)?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Попробуй вот так

// 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.
0 голосов
/ 03 февраля 2020

Сохраняйте порядковый номер нужного вам города, когда вы добавляете города в ArrayList с именем

Str_array_ke c

Затем выберите спиннер для этого элемент путем вызова функции .setSelection (), как показано ниже:

    spn_edt_kec.setSelection(yourDesiredCityIndex)
...