2016-11-08 7 views
0

私はRecyclerViewを持っています。リサイクルアイテムとその動作を検索するフィルタを作成しようとしましたが、それを使用して何かを入力すると結果はリストの最初のアイテムになります。フィルタメソッドはちょうど最初のアイテムを返します。

これは、Filterメソッド

private List<Data> filter(List<Data> datas, String newText) { 
    newText = newText.toLowerCase(); 

    final List<Data> filteredModelList = new ArrayList<>(); 
    for (Data data : datas) { 

     final String text = data.getTODO_TITLE().toLowerCase(); 
     if (text.contains(newText)) { 
      filteredModelList.add(data); 
     } 
    } 
    return filteredModelList; 
} 

であり、これはなぜあなたは毎回あなたが検索アダプタの新しいインスタンスを作成しているメニュー

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_search, menu); 
    MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
    searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
     } 
    }); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 

      return true; 
     } 
     @Override 
     public boolean onQueryTextChange(final String searchQuery) { 
      final List<Data> filteredModelList = filter(dbList, searchQuery); 
      filteredModelList.indexOf(searchQuery); 
      List <Data> search =filteredModelList; 
      todoRecyclerView.scrollToPosition(0); 
      recyclerAdapter = new TodoRecyclerAdapter(search); 
      recyclerAdapter.notifyDataSetChanged(); 

      return false;}}); 
    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      return true; 
     } 
     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      return true; 
     } 
    }); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == R.id.action_search) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
}} 
+0

を呼び出す私はすでに、なぜあなたはそれを使用いけない、あなたの作業アダプターのソースコードを与えましたか? – pskink

+0

アダプターの使い方が分からず、別の方法を試しました –

+0

あなたは何を知っていますか?アダプタを作成し、いくつかのデータを 'add()'にして、 'setAdapter'メソッドでそれを使用します。 – pskink

答えて

0

のですか?

recyclerAdapter = new TodoRecyclerAdapter(search);

代わりに一回で作成し、recyclerAdapter.notifyDataSetChanged();

+0

にそれらを配置する方法を示しています、recyclerAdapter = new TodoRecyclerAdapterを削除するとサーチ); アプリを実行すると、何も表示されません –

+0

あなたはグローバルとしてそれを取ってアダプタを設定する必要があります! –