安卓系统:搜索视图不工作



我使用此代码在字典中搜索单词:

字典列表:

final List<String> letters;
    letters = getAllLetters();
    adapter= new adapterRow(getApplicationContext(), letters);
    ListView myList = (ListView)findViewById(R.id.listView);
    myList.setAdapter(adapter);

和搜索方法:

   getMenuInflater().inflate(R.menu.menu_dictionary, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setIconified(true);
    searchView.setQueryHint("Search...");
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return true;
        }
        @Override
        public boolean onQueryTextChange(String newText) {
            Dictionary.this.adapter.getFilter().filter(newText);
            return false;
        }
    });

当我点击搜索图标时,它会打开文本框,我可以在其中写入我的输入,但它不会过滤任何内容。我找不出问题出在哪里。提前感谢

菜单:

 <item android:id="@+id/action_search" android:title="Search"
    android:orderInCategory="80" app:actionViewClass="android.support.v7.widget.SearchView"
    android:enabled="true"  android:icon="@drawable/ic_search_white_24dp"
    app:showAsAction="always"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
</item>

适配器类别:

   private Context context;
        private List <String> listSounds;
        public adapterRow(Context context, List<String> friends) {
            super(context, R.layout.rowlayout, friends);
            this.context=context;
            this.listSounds=friends;
        }
    @Override
    public int getCount() {
        return listSounds.size();
    }
    @Override
    public Object getItem(int position) {
        return position;
    }
    @Override
    public long getItemId(int position) {
        return 0;
    }
    static class ViewHolder {
        TextView one;
        TextView two;
        int position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View customView=convertView;
        if(customView==null){
            LayoutInflater inflater = LayoutInflater.from(context);
           customView=inflater.inflate(R.layout.rowlayout,null);
        }
        String name = listSounds.get(position);
ViewHolder holder=new ViewHolder();
       holder.one = (TextView)customView.findViewById(R.id.textView4);
        holder.two = (TextView)customView.findViewById(R.id.textView5);
      holder.one.setText(name);
      holder.two.setText("Defintion");

onQueryTextChange() 中尝试以下代码

if (TextUtils.isEmpty(newText)) {
    myList.clearTextFilter();
} else {
    myList.getAdapter().getFilter().filter(newText);
}

最新更新