插入ArrayAdapter不会更新Spinner选择

时间:2015-12-15 01:53:12

标签: android arraylist view spinner android-arrayadapter

我正在尝试将项目插入到多个Spinners正在使用的适配器中。但是,当我插入适配器时,我希望Spinners保留基于对象而不是位置的原始选择。

在下面的情况中,Spinner最初选择“四”,但是当我单击按钮以插入“三”时,微调器现在设置为“三”而不是更新到“四”的新位置。我怎样才能做到这一点?

public class MyActivity extends Activity {
List list;

ArrayAdapter<String> adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Spinner spinner = (Spinner) findViewById(R.id.spinner1);
    list = new ArrayList<>();
    list.add("one");
    list.add("two");
    list.add("four");
    adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, list);
    spinner.setAdapter(adapter);

    // set selection to "four"
    spinner.setSelection(2);

    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //list.add(2, "three") causes the same problem
            adapter.insert("three", 2);
            adapter.notifyDataSetChanged();
        }
    });
}

2 个答案:

答案 0 :(得分:0)

你应该调用spinner.setAdapter(adapter);或者在将新值插入适配器后使用类似的方法吗?

答案 1 :(得分:0)

spinner.setSelection(list.indexOf("four"));

这会将选择设置为&#34;四&#34;无论它处于什么位置。