2016-11-08 1 views
0

나는 RecyclerView을 가지고 있으며 필터를 리사이클 항목과 해당 작업으로 검색하려고했지만 그 중 어떤 것을 입력하면 결과는 목록의 첫 번째 항목 일뿐입니다.필터 메소드는 첫 번째 항목 만 반환합니다.

이 필터 방법

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

recyclerAdapter = new TodoRecyclerAdapter(search);

이 대신 한 번에 만들고 전화, 왜 당신은 그것을 사용 해달라고? – pskink

+0

나는 어댑터를 사용하는 방법을 알 수 없으며 다른 방법을 사용하려고했습니다. –

+0

당신은 무엇을 알고 있습니까? 단지'add()'를 만들고,'setAdapter' 메쏘드에서 그것을 사용합니다. 3 단계에서 불분명 한 것은 무엇입니까? – pskink

답변

0

입니까? 난 이미 당신에게 작업 어댑터 소스 코드를했다 recyclerAdapter.notifyDataSetChanged();

+0

수색); 을 실행하고 표시하려면 아무 것도 표시되지 않습니다. –

+0

을 글로벌로 설정하고 어댑터를 설정해야합니다. –

관련 문제