我正在起诉多选微调器,以使用改型将语言更新到服务器。但是,当我从微调器中选择多个选项时,它将返回一个布尔数组,并且所选值将返回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
中,我必须获取每个选定标题的值的数组。
答案 0 :(得分:0)
在此问题中,您需要将 ArrayList toSend = new ArrayList <>(); 定义为现有方案中的全局变量,每次您从微调器中选择一种语言时,您都将创建新的数组列表< / p>