2013-06-20 3 views
0

У меня есть класс, содержащий boolean и ArrayList. Я хочу заполнить Spinner элементами внутри моего ArrayList, но если значение boolean истинно, я хочу показать все элементы, в противном случае я хочу скрыть некоторые элементы в диапазоне. Я пробовал следующее:Скрыть некоторые элементы в Spinner

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(); 
    } 
} 

Но это не сработало. Каков правильный способ сделать это? Update: Рабочего код

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--; 
    } 
} 

ответ

2

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

Попробуйте следующее: modeAdapter.remove (modeList.get (i));

+0

Он работает, хотя я должен каждый раз инициализировать ArrayList. (getModes получает доступ статически) Мне также пришлось изменить цикл for. – Vektor88