как получить и сравнить значение индекса из onItemSelected в многократном выборщике - PullRequest
0 голосов
/ 03 апреля 2019

Я подаю в суд на мультиселектор, чтобы обновить языки на сервере с помощью модернизации. но когда я выбираю несколько опций из spinner, он возвращает логический массив, а выбранное значение возвращается как true, а остальные как false. Теперь мне нужно получить значение для каждого заголовка с помощью индекса, сохранить их в массив и отправить этот массив на сервер для обновления моей записи. вот изображение, которое это объясняет.

На этом изображении показан логический массив, который возвращает значение true для каждого выбранного значения, а другой массив - мои данные. Мне нужно показать пользователю заголовок, а на внутреннем уровне - отправить значение для каждого заголовка.

это код, который я не могу получить массив значений для каждого выбранного заголовка. пожалуйста помогите

        Call<List<EnglishLevel>> call_english = RetrofitClient.getInstance().getApi().getenglishlist("english_levels");
        call_english.enqueue(new Callback<List<EnglishLevel>>() {
            @Override
            public void onResponse(Call<List<EnglishLevel>> call, Response<List<EnglishLevel>> response) {
                arrayList_english =response.body();
                for (EnglishLevel C:arrayList_english){
                    if (C.getTitle() != null){
                        Log.d("English level" , C.getTitle());
                        final String[] levelName = new String[arrayList_english.size()];
                        for (int i=0 ; i<arrayList_english.size() ; i++){
                            levelName[i]= arrayList_english.get(i).getTitle();
                        }
                        ArrayAdapter<String> adapter= new ArrayAdapter <String>(SearchActivity.this,
                                android.R.layout.simple_list_item_multiple_choice,
                                levelName);

                        english.setListAdapter(adapter).setListener(new MultiSelectSpinner.MultiSpinnerListener() {
                            @Override
                            public void onItemsSelected(boolean[] selected) {
                                ArrayList<String> toSend = new ArrayList<>();
                                for(int j = 0; j < arrayList_english.size(); j++){
                                    if(selected[j]) {

                                      toSend.add(arrayList_english.get(j).getValue());
                                    }
                                }
//
                            }
                        })
                                .setSelectAll(false).setMinSelectedItems(0);

                    }
                }
            }
            @Override
            public void onFailure(Call<List<EnglishLevel>> call, Throwable t) {
                Toast.makeText(SearchActivity.this , t.getMessage() , Toast.LENGTH_SHORT).show();
            }
        });

В приведенном выше коде у меня есть проблема с какой-то его частью ...

   english.setListAdapter(adapter).setListener(new MultiSelectSpinner.MultiSpinnerListener() {
                            @Override
                            public void onItemsSelected(boolean[] selected) {
                                ArrayList<String> toSend = new ArrayList<>();
                                for(int j = 0; j < arrayList_english.size(); j++){
                                    if(selected[j]) {

                                      toSend.add(arrayList_english.get(j).getValue());
                                    }
                                }
//
                            }

в onItemSelected мне нужно получить массив значений каждого выбранного заголовка.

1 Ответ

0 голосов
/ 03 апреля 2019

в этой задаче вам нужно определить ArrayList toSend = new ArrayList <> (); как глобально в существующем сценарии, вы создаете новый список массивов каждый раз, когда выбираете один язык из счетчика

...