如何在多重选择微调器中从onItemSelected获取和比较索引值

时间:2019-04-03 06:03:00

标签: java android arrays spinner

我正在起诉多选微调器,以使用改型将语言更新到服务器。但是,当我从微调器中选择多个选项时,它将返回一个布尔数组,并且所选值将返回true,而其他值将返回false。现在,我需要使用索引获取每个标题的值,并将它们存储到数组中,然后将该数组发送到服务器以更新我的记录。这是解释它的图像。

此图显示了布尔数组,该布尔数组针对每个选定的值返回true,另一个数组是我的数据,我必须向用户显示标题,而在后端,我必须针对每个标题发送该值。

这是代码i,我必须无法针对每个选定的标题获取值数组。请帮助

        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 :(得分:0)

在此问题中,您需要将 ArrayList toSend = new ArrayList <>(); 定义为现有方案中的全局变量,每次您从微调器中选择一种语言时,您都将创建新的数组列表< / p>