2

like my tittle, i want to ask...

how to add spinner on contextual action bar like in galery android?

now i just can set the tittle like "1 selected" "2 selected"

here`s my code

public void lvMainOnLongItemClick(){
    lvMain.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    lvMain.setMultiChoiceModeListener(new MultiChoiceModeListener() {
        private int nr = 0;
        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // TODO Auto-generated method stub
            adapter.clearSelection();
        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            nr = 0;
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.canvas_main, menu);
            menuEdit = menu.findItem(R.id.menu_edit);
            menuUpload = menu.findItem(R.id.menu_upload);
            menuUpload.setVisible(false);
            return true;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            // TODO Auto-generated method stub
            switch (item.getItemId()) {
            case R.id.menu_edit:
                Toast.makeText(rbkMain.this, "Edit", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_cancel:
                Toast.makeText(rbkMain.this, "Cancel", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_copy:
                Toast.makeText(rbkMain.this, "Copy", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_upload:
                Toast.makeText(rbkMain.this, "Upload", Toast.LENGTH_SHORT).show();
                break;
            default:
                Toast.makeText(rbkMain.this, "Yihaa", Toast.LENGTH_SHORT).show();
                break;
            }
            return true;
        }

        @Override
        public void onItemCheckedStateChanged(ActionMode mode, int position,long id, boolean checked) {
            // TODO Auto-generated method stub
            if (checked) {
                nr++;
                adapter.setNewSelection(position, checked);
            } else {
                nr--;
                adapter.removeSelection(position);
            }
            if(nr > 1)
                menuEdit.setVisible(false);
            else
                menuEdit.setVisible(true);

            mode.setTitle(nr + " selected");
        }
    });

    lvMain.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {
            lvMain.setItemChecked(position, adapter.isPositionChecked(position));
            return false;
        }
    });

thx a lot for your help... happy coding

DumDum
  • 67
  • 7

2 Answers2

1

For regular ActionBar this worked for me Adding spinner to ActionBar (not Navigation but for the contextual action bar it was not working. This is how I made it work, see if it can help you.

For your listview listener something like this:

@Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mode.getMenuInflater().inflate(YOUR_MENU_XML, menu);
            filterSpinner = (Spinner) MenuItemCompat.getActionView(menu.findItem(R.id.menu_overlay_spinner));
            filterSpinner.setAdapter(send2Adapter);
            return true;
        }

The menu xml should have something like this:

<item
    android:icon="@drawable/filter"
    android:id="@+id/menu_overlay_spinner"
    android:title="Spinner"
    app:actionViewClass="android.widget.Spinner"
    app:showAsAction="ifRoom"
    android:actionLayout="@layout/YOUR_ACTION_LAYOUT"/>

Finally the actionLayout is just a layout with a Spinner as the root:

<?xml version="1.0" encoding="utf-8"?>
<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Community
  • 1
  • 1
jam01
  • 124
  • 7
0

In onCreate of main activity

// This has to be called before setContentView and you must use the 
// class in android.support.v4.view and NOT android.view

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

To show/hide progress in action bar. Notice with actionbarsherlock you must use boolean.TRUE/FALSE, not just true/false.........

if (getSupportLoaderManager().hasRunningLoaders()) {
   setProgressBarIndeterminateVisibility(Boolean.TRUE); 
} else {
   setProgressBarIndeterminateVisibility(Boolean.FALSE); 
}
Archit Jain
  • 487
  • 1
  • 3
  • 12