我正在起诉多选微调器以使用改造将语言更新到服务器。但是当我从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
中,我必须获得每个选定标题值的数组。
在这个问题中你需要定义你的ArrayList toSend = new ArrayList <>();作为现有场景中的全局,您每次从微调器中选择一种语言时都会创建新的阵列列表