跳至主要内容

How to close SearchView in android with ActionbarSherlock or android ActionBar


How to close SearchView in android with ActionbarSherlock or android ActionBar

When I use a search view for search something in android action bar;
u must have create a menu for actionview( SearchView)
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.news_post_list, menu);
    mSearchView = (SearchView) menu.findItem(R.id.item_search).getActionView();
    mSearchView.setQueryHint(getString(R.string.search_hint_news));
    mSearchView.setOnQueryTextListener(this);
    super.onCreateOptionsMenu(menu, inflater);
}
and menu xml is :


<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
    android:id="@+id/item_search"
    android:icon="@drawable/ic_action_search"
    android:title="@string/search_hint"
    android:showAsAction="ifRoom"
    android:actionViewClass="com.actionbarsherlock.widget.SearchView"/>
<item
    android:id="@+id/item_tweet_add"
    android:icon="@drawable/contribute"
    android:showAsAction="always"
    android:title="@string/tweet_new"
    android:titleCondensed="@string/tweet_new"/>
</menu>



I input my keywords for search if click search then activity go search like exm:
@Override
public boolean onQueryTextSubmit(String query) {
    Intent intent = new Intent(mContext, NewsSearchActivity.class);
    intent.putExtra("query", query);
    startActivity(intent);
    return true;
}
A new activity start for show you search result. Now I finish this activity or fragment. The search view is open and wait me input (I want it's close).
so you can do like this :
mSearchView.onActionViewCollapsed();
mSearchView.setQuery("", false);
mSearchView.clearFocus();

评论

  1. Hi Jerry, I'm currently working on SherlockListFragment, which has a searchview widget located at the actionbar. However, my searchview is not able to filter anything from my custom ArrayAdapter. Here is the link: http://stackoverflow.com/questions/18002042/searchview-in-sherlocklistfragment

    Do you have any idea about this problem?

    Thank you

    回复删除
    回复
    1. // this is my code in my project. and it's run well. you can do like this.

      private void initSearchView() {
      mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
      @Override
      public boolean onQueryTextSubmit(String query) {
      return false;
      }

      @Override
      public boolean onQueryTextChange(String newText) {
      if (TextUtils.isEmpty(newText) && TextUtils.isEmpty(newText.trim())) {
      searching = false;
      mListView.setAdapter(mClientListAdapter);
      return false;
      } else {
      searching = true;
      searchClients(newText);
      return true;
      }
      }
      });
      }

      删除
  2. Hi Jerry, thanks a lot..this one solved my problem, really appreciate the code.

    回复删除

发表评论

此博客中的热门博文

How to change ViewPager scroll animation duration and velocity

When you call change current selected view pager position you may call like this. // change current position default is viewPager.setCurrentItem(position, true); viewPager . setCurrentItem ( position ); There will show transaction animation for change position , but this animation is too fast. So I want change this animation. When I see source code I find this, like flow. where is the scroll animation and speed.     int duration = 0 ;     velocity = Math . abs ( velocity );     if ( velocity > 0 ) {         duration = 4 * Math . round ( 1000 * Math . abs ( distance / velocity ));     } else {         final float pageWidth = width * mAdapter . getPageWidth ( mCurItem );         final float pageDelta = ( float ) Math . abs ( dx ) / ( pageWidth + mPageMargin );         duration = ( int ) (( pageDelta + 1 ) * 100 ); ...

how to open context menu for android listview item button

Like title, here is this problem in my activity like this: An more button in every row of listview item . When I click this more button then show activity context menu. So I try to click button, but open context menu is the Adaper's context menu. My  Adapter  is extends from BaseAdapter ,  BaseAdapter  has not context menu. My solution like example : <ImageButton android:id="@+id/more" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="15dp" android:background="#00000000" android:src="@drawable/btn_addressbook_more" android:onClick="onMoreClick"/> Add an event named  onMoreClick , when user click this button will do  onClick  event in  activity . // maybe you can registe...