如何将功能搜索栏添加到导航抽屉?

时间:2015-02-26 03:29:35

标签: android filter navigation-drawer searchbar

我正在开发一个壁纸应用程序,从Picasa加载它的图像我有一个导航抽屉,从Picasa相册名称中检索它的项目名称 (我正在使用本教程的源代码Link),所以我想添加一个搜索栏,用于过滤导航抽屉中的项目,有关如何实现此目的的任何想法吗?

2 个答案:

答案 0 :(得分:3)

可能有点晚了。但可以帮助别人。

  1. 将EditText添加到导航Drawer。(activity_main.xml)

    <EditText
       android:id="@+id/inputSearch"
       android:layout_width="match_parent"
       android:layout_height="40dp"
       android:layout_margin="10dp"
       android:hint="search" 
       android:padding="10dp"
       android:layout_marginTop="25dp"
       android:inputType="text" >
     </EditText>
    
  2. 将TextWatcher添加到editText。 (将以下行添加到onCreate

       final EditText inputSearch = (EditText) findViewById(R.id.inputSearch);
    
        inputSearch.addTextChangedListener(new TextWatcher() {
    
        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // TODO Auto-generated method stub
            //You should use the adapter in NavigationDrawerFragment
            NavigationDrawerFragment.adapter.getFilter().filter(cs);
    
        }
    
        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
    
        }
    });
    
  3. 希望这有帮助。

答案 1 :(得分:0)

您可以将导航抽屉设为Fragment,其中包含ArrayAdapter,其中包含Filterable。此适配器将包含您的Picasa相册名称列表。

对于搜索框,一个简单的EditText可以完成这项工作。注册一个可以收听文字更改事件的TextWatcher,并在Filter的{​​{1}}上点击Filter.filter()并输入文字作为查询。