我有一个包含私人boolean
和ArrayList
的课程。我想用Spinner
中的元素填充ArrayList
,但如果boolean
为真,我想显示所有元素,否则我希望隐藏范围内的某些元素。我尝试了以下方法:
Spinner modeSpinner = (Spinner) v.findViewById(R.id.btn_setup_mode_spinner);
ArrayList<String> modeList = enc.getModes();
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(v.getContext(), android.R.layout.simple_spinner_item, modeList);
modeAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
modeSpinner.setAdapter(modeAdapter);
if(!boolean){
for(int i=4;i<8;i++){
modeAdapter.remove((String) modeAdapter.getItem(i));
modeAdapter.notifyDataSetChanged();
}
}
但它不起作用。这是正确的方法吗? 更新:工作代码
Spinner modeSpinner = (Spinner) v.findViewById(R.id.btn_setup_mode_spinner);
ArrayList<String> modeList = enc.getModes();
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(v.getContext(), android.R.layout.simple_spinner_item, modeList);
modeAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
modeSpinner.setAdapter(modeAdapter);
if(!boolean){
for(int i=4;i<modeList.size();i++){
modeAdapter.remove(modeList.get(i));
modeAdapter.notifyDataSetChanged();
i--;
}
}
答案 0 :(得分:2)
您应该从适配器中删除不是适配器字符串,而是从早期添加到其中的对象。
试试这个:modeAdapter.remove(modeList.get(i));