ActionBar Dropdown Spinner item defaults to first item

本秂侑毒 提交于 2019-12-02 22:46:01

Make sure you call setListNavigationCallbacks method before changing selected element. I can't see it in your example, so I think that's the problem.

Here is an example:

actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(adapter, this);
actionBar.setSelectedNavigationItem(position);

It works in my app without any problems.

Nick

Have you tried using shared prefences to save the value of the selected spinner. I used this code to save the users selection with shared preferences so the next time they opened the app the spinner was set to the last value they chose:

Spinner Spinner = (Spinner) findViewById(R.id.Spinner);
String[] spinnervalues = getSpinnervalues();
ArrayAdapter<CharSequence> spinnerAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, makes);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner.setAdapter(spinnerAdapter);
int position = Utils.getIndex(getSpinnerval(), makes);

Spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        String selected = (String) parentView.getSelectedItem();
        Spinner Spinner = (Spinner) findViewById(R.id.Spinner);
        String[] spinnervalues = Filter.this.getSpinnerval(selected);
        ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(Filter.this, android.R.layout.simple_spinner_item, models);
        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        Spinner.setAdapter(adapter);
    }

    public void onNothingSelected(AdapterView<?> parentView) {}
});

Spinner.setSelection(makeposition, true);
int position = Utils.getIndex(getSpinnerval());
if (position >= 0) {
    Spinner Spinner = (Spinner) findViewById(R.id.Spinner);
    Spinner.setSelection(position, true);
}

Then the get Util:

public String getSpinnerval() {
    return getSharedPreferences().getString("val", "");
}

I altered the code a little so it might not be 100% right but may give you an idea.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!