Как добавить ответ JSON в спиннер в Android с помощью модернизации? - PullRequest
0 голосов
/ 29 сентября 2018

В нашем проекте мы не жестко кодируем Label, а dropdown, мы присваиваем значение Label из JSON.Я не понимаю, как назначить пол array для dropdown.
Вот ответ, получаемый с URL

{
    "statusCode": "200",
    "statusMessage": "SUCCESS",
    "meetmeConfig": {
        "id": "bb52dc0f-29d0-4079-99c7-a07c8045a829",
        "moduleName": "MeetMe",
        "createdDate": 1523962430721,
        "configContent": {
            "trackingOptions": [
                {
                    "optionName": "Before the meet",
                    "isTimeRequired": true,
                    "trackingTime": [
                        5,
                        10,
                        15
                    ],
                    "isDeleted": false
                },
                {
                    "optionName": "After the meet",
                    "isTimeRequired": true,
                    "trackingTime": [
                        5,
                        10,
                        15
                    ],
                    "isDeleted": false
                },
                {
                    "optionName": "At the start",
                    "isTimeRequired": false,
                    "trackingTime": [],
                    "isDeleted": false
                },
                {
                    "optionName": "Never",
                    "isTimeRequired": false,
                    "trackingTime": [],
                    "isDeleted": false
                }
            ],
            "numberOfParticipants": 8,
            "mapResetTimeInterval": 30,
            "meetingTrackableTime": 3600,
            "addressTypes": [
                "Home",
                "Work"
            ],
            "transportModes": [
                "Walking",
                "Driving"
            ],
            "gender": [
                "Male",
                "Female",
                "Trans-Female",
                "Bi-Gender",
                "Non-Binary",
                "Gender nonconfirming",
                "Undisclosed",
                "Rather not say"
            ],
            "toastDelayTimeForPulse": 3,
            "syncToastMaxTimeInterval": 300,
            "syncToastThirdTimeInterval": 180,
            "firstTimeInterval": 1,
            "secondTimeInterval": 2,
            "meetmeSearchContactTimeInterval": 2,
            "signupToastDelayTime": 4,
            "signupToastdelatimebysix": 6,
            "signupToastDelayMedium": 5,
            "profileToastDelayTime": 4,
            "profileToastDelatimebysix": 6,
            "languages": [
                "English",
                "Spanish",
                "Marathi",
                "Hindi",
                "Bengali",
                "French",
                "Arabic",
                "German",
                "Italian",
                "Dutch",
                "Japanese",
                "Russia",
                "Korean"
            ]
        }
    }
}

. Я хочу использовать пол, полученный из ответа и добавленный вSpinner, который находится во фрагменте.
Вот код в методе onResponse.

heroList =  response.body();   
data = new ArrayList<>(Arrays.asList(heroList));                                                

Log.d("Data","Datarecevied:"+heroList.getMeetmeConfig().getConfigContent().getGender());

Как мы можем это сделать?

Ответы [ 4 ]

0 голосов
/ 29 сентября 2018

Просто попробуйте этот код, и ваша проблема будет решена. Спасибо

ArrayAdapter<String> genderAdapter;
Spinner spin_gender = findViewById(R.id.spin_gender);

heroList =  response.body();   
data = new ArrayList<>(Arrays.asList(heroList));                                                

String[] genderArray = heroList.getMeetmeConfig().getConfigContent().getGender()

genderAdapter = new ArrayAdapter<String>(this, R.layout.label, genderArray);
spin_gender.setAdapter(genderAdapter);
0 голосов
/ 29 сентября 2018

Когда у вас есть JSON Response, есть библиотека Android под названием Ason, найденная здесь https://android -arsenal.com / details / 1/5313

Вы можете использовать библиотеку дляПолучить массив, который вы хотели бы использовать на вашем счетчике, проще.Это обертка org.json в Android.

Таким образом, ваш массив будет построен следующим образом:

Ason ason = new Ason(urlResponse);
AsonArray genderArray = ason.getJsonArray('meetmeConfig.configContent.gender')

//then u convert the genderArray into an array or ArrayList thats spinners use
ArrayList<String> spinnerItems = new ArrayList();
for (Ason gender : genderArray){
    spinnerItems.add(gender.toString());
}

используйте spinnerItems для адаптера счетчика

0 голосов
/ 29 сентября 2018
 AppCompatSpinner spinner;
 spinner = (AppCompatSpinner) findViewById(R.id.spinner);
 ArrayList<String> categoryDropDownItems = new ArrayList<String>();

В вашем ответе

categoryDropDownItems.add("<Set Title if you want>");

 //Array Response from Server
 if (response != null) {
     if (response.length() > 0) {
         for (int i = 0; i < response.length(); i++) {
             try {
                 JSONObject jsonObject = response.getJSONObject(i);
                 String dropDownDisplayCategoryName = jsonObject.getString("<YOUR STRIN FROM JSON>");                  
                 categoryDropDownItems.add(dropDownDisplayCategoryName);
             } catch (JSONException je) {
                 return null;
             }
         }
      } else {
          return null;
      }
 }

// Для задания данных массива в Spinner

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_item, categoryDropDownItems);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setSelection(selection);

Если вы хотите передать данные из действия во фрагмент, вы можете использовать

Fragment fragment = new YourFragmentName();
Bundle bundle = new Bundle();
bundle.putString("RESPONSE",<Your Response as a String>);
fragment.setArguments(bundle);

и получение данных во фрагменте, как показано ниже

String responseData = getArguments().getString("RESPONSE");

Теперь вы можете преобразовать свой объект в JSON и из JSON получить Spinner данные и использовать указанный выше код для добавления данныхв ArrayList и установите Spinner.

0 голосов
/ 29 сентября 2018
List anyList = heroList.getMeetmeConfig().getConfigContent().getGender()

Spinner spinner = (Spinner) findViewById(R.id.msSpinnerID);

ArrayAdapter<String> adp = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, anyList);

adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setAdapter(adp);

Если вы хотите показать в диалоге

AlertDialog.Builder builderSingle = new AlertDialog.Builder(DialogActivity.this);
builderSingle.setIcon(R.drawable.ic_launcher);
builderSingle.setTitle("Select One Name:-");
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(DialogActivity.this, android.R.layout.select_dialog_singlechoice);
  List anyList = heroList.getMeetmeConfig().getConfigContent().getGender()
for(gender : anyList)
{
arrayAdapter.add(gender)
}
builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
builderSingle.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String strName = arrayAdapter.getItem(which);
                Log.e("My Selected Gender", strName)
       }
        });
builderSingle.show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...