frgnvola
frgnvola

Reputation: 518

How to remove an item from the action bar drop down navigation menu

I have an app with an action bar that has drop down navigation ( like a spinner ). Is it possible to programmatically remove an item from the list?

EDIT: Relevant code:

// Set up the dropdown list navigation in the action bar.
        actionBar.setListNavigationCallbacks(
        // Specify a SpinnerAdapter to populate the dropdown list.
                new ArrayAdapter<String>(getActionBarThemedContextCompat(),
                        android.R.layout.simple_list_item_1,
                        android.R.id.text1, list), this);

Upvotes: 0

Views: 1484

Answers (1)

VegeOSplash
VegeOSplash

Reputation: 204

  1. get ActionBar instance by calling getActionBar();
  2. remove the App Name in ActionBar by setDisplayShowTitleEnabled(false);
  3. set Action bar Navigation as List
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
  4. Create a Arraylist and add item you want to be in Spinner in Menu.
  5. bind the List to ArrayAdapter.
  6. set the adapter to action Bar
  7. now spinner in Action Bar is created.
  8. to remove the item just remove the item in list and call notifyDataSetChanged() this in turn refresh the adapter and reflect on UI.

Here is Full Code to Remove the Item in (Spinner ) in action bar

import java.util.ArrayList;
import java.util.List;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;

public class MainActivity extends Activity implements
        ActionBar.OnNavigationListener {

    ActionBar actionBar;
    List spinnerList;
    ArrayAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        actionBar = getActionBar();
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

         spinnerList = new ArrayList();
        spinnerList.add("Item1");
        spinnerList.add("Item2");
        spinnerList.add("Item3");
        spinnerList.add("Item4");
         adapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_item, spinnerList);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        actionBar.setListNavigationCallbacks(adapter, this);
        removeItemInActionBar(2);

    }

    public void removeItemInActionBar(int position) {
        spinnerList.remove(position);
        adapter.notifyDataSetChanged();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        // TODO Auto-generated method stub
        return false;
    }
}

Upvotes: 1

Related Questions