I am trying to insert an item into an Adapter that multiple Spinners are using. However when I insert into the adapter, I would like the Spinners to retain their original selection based off the object and not the position.
In the case below, the Spinner is originally selecting "four", but when I click the button to insert "three", the spinner is now set to "three" instead of updating to the new position of "four". How can I achieve this?
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();
        }
    });
}
 
     
    