我正在尝试将项目插入到多个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();
}
});
}
答案 0 :(得分:0)
你应该调用spinner.setAdapter(adapter);或者在将新值插入适配器后使用类似的方法吗?
答案 1 :(得分:0)
spinner.setSelection(list.indexOf("four"));
这会将选择设置为&#34;四&#34;无论它处于什么位置。