0

booleanprivateと.を含むクラスがありArrayListます。Spinneraに my 内の要素を入力したいが、 trueArrayListの場合は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--;
    }
}
4

1 に答える 1

2

アダプタ文字列ではなくアダプタから削除する必要がありますが、早期に追加したオブジェクトを削除する必要があります。

これを試してください: modeAdapter.remove(modeList.get(i));

于 2013-06-20T19:12:19.363 に答える