2015-04-30 45 views
5

我正在開發一個應用程序,其中searchview在主活動的操作欄中。在主要活動中有3個片段。每個片段都有一個列表視圖。問題是如何在activityview的actionbar中實現searchview時對fragment的列表項進行排序。如何在listview中存在分段時在activity(actionbar)中實現searchview

我正在使用簡單的遊標適配器和列表視圖有其中有textview和imageview的自定義行。

enter image description here

這是搜索查看的活動

SearchManager SManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    MenuItem searchMenuItem = menu.findItem(R.id.action_search); 
    android.support.v7.widget.SearchView searchViewAction = (android.support.v7.widget.SearchView) MenuItemCompat.getActionView(searchMenuItem); 
    searchViewAction.setSearchableInfo(SManager.getSearchableInfo(getComponentName())); 

    searchViewAction.setIconifiedByDefault(true); 

      android.support.v7.widget.SearchView.OnQueryTextListener textChangeListener = new android.support.v7.widget.SearchView.OnQueryTextListener() 
    { 
     @Override 
     public boolean onQueryTextChange(String newText) 
     { 
      // this is your adapter that will be filtered 
      adapter.getFilter().filter(newText); 
      System.out.println("on text chnge text: "+newText); 
      return true; 
     } 
     @Override 
     public boolean onQueryTextSubmit(String query) 
     { 
      // this is your adapter that will be filtered 
      adapter.getFilter().filter(query); 
      System.out.println("on query submit: "+query); 
      return true; 
     } 
    }; 
    searchViewAction.setOnQueryTextListener(textChangeListener); 

的代碼片段的代碼

Cursor mCursor = getContacts(); 
getActivity().startManagingCursor(mCursor); 



c_adapter = new SimpleCursorAdapter(getActivity(), R.layout.contact_item, mCursor, 
     new String[]{ContactsContract.Contacts.DISPLAY_NAME 
       , ContactsContract.Contacts.PHOTO_THUMBNAIL_URI, ContactsContract.Contacts._ID}, 

     new int[]{R.id.username1, R.id.ivuserpicicon1}); 



    if (c_adapter.getCount() == 0) { 
     Toast.makeText(getActivity(), "No Items Available", Toast.LENGTH_SHORT).show(); 
    } 

    listview = (ListView) view.findViewById(R.id.listview); 
    listview.setAdapter(c_adapter); 
    listview.setTextFilterEnabled(true); 

我如何能實現搜索查看。我需要一點指導。

+0

你到目前爲止所嘗試過的。 – Gattsu

+0

如果這是您的應用程序看起來像現在,請確保您使用AppCompat和目標22,以便用戶將能夠在材料設計中查看此(儘可能接近)。 –

+0

我面臨着同樣的問題。我在主要活動中搜索視圖,並且它包含一個通過片段使用FragmentStatePagerAdapter填充的視圖尋呼機.List視圖包含在片段中。我需要過濾片段的列表視圖活動標籤在主要活動中使用「搜索」視圖。是否已解決問題?請幫助我解決問題。 –

回答

2

與片段到活動通信相比,片段通信活動相當簡單。您可以查看以下鏈接兩種類型的通信

http://developer.android.com/training/basics/fragments/communicating.html#Deliver

在你的活動,你可以得到一個包含ListView控件的片段的實例,並調用所有的搜索和排序操作。

假設你已經在你的菜單佈局文件添加

android:actionViewClass="android.widget.SearchView" 

您的搜索菜單項,在活動的onCreateOptionsMenu您可以添加

MenuItem searchItem = menu.findItem(R.id.your_search_menu_item); 
    SearchView actionSearchView = (SearchView) searchItem.getActionView(); 

    actionSearchView.setIconifiedByDefault(false); 
    actionSearchView.setOnQueryTextListener(//Set up your OnQueryTextListener here); 

在OnQueryTextListener的onQueryTextChange方法,你可以調用你的fragment方法進行搜索和排序。

+0

請參閱編輯... –

相關問題