2017-06-06 5 views
0

フィールド名、コード、およびモバイルを持つモデルクラス配列リストがあります。私はすべての検索ビューを使用したい。私は名前検索ビューXYZで、モバイル検索ビュー9768で書く場合たとえば、それはあなたがループを使用して、各項目の値を比較それを行うことができますXYZと9768.単一配列リストモデルクラスデータの複数の検索ビュー

searchMasterList2.add(new SearchItemMaster("111", "222", "333")); 
     searchMasterList2.add(new SearchItemMaster("555", "333", "444")); 
     searchMasterList2.add(new SearchItemMaster("222", "444", "555")); 
     searchMasterList2.add(new SearchItemMaster("333", "111", "222")); 
     searchMasterList2.add(new SearchItemMaster("444", "555", "111")); 


     final android.support.v7.widget.SearchView searchView1 = (android.support.v7.widget.SearchView) getView().findViewById(R.id.item_name_edtv); 

     searchView1.setOnSearchClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       is_click_search_item=true; 
       is_click_search_group=false; 
      } 
     }); 
     searchView1.setOnQueryTextListener(this); 
     searchView1.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       is_click_search_item=true; 
       is_click_search_group=false; 
      } 
     }); 
     final android.support.v7.widget.SearchView searchView2 = (android.support.v7.widget.SearchView) getView().findViewById(R.id.group_edtv); 
     searchView2.setOnSearchClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       is_click_search_item=false; 
       is_click_search_group=true; 

      } 
     }); 

     searchView2.setOnQueryTextListener(this); 
     searchView2.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       is_click_search_item=false; 
       is_click_search_group=true; 

      } 
     }); 

    @Override 
     public boolean onQueryTextChange(String newText) { 

      final List<SearchItemMaster> filteredModelList = filter(searchMasterList2, newText); 
      Log.v("App", newText + ", " + searchMasterList2.size() + ", " + filteredModelList.size()); 
      adapter.animateTo(filteredModelList); 
      recyclerView.scrollToPosition(0); 
      return false; 
     } 

private List<SearchItemMaster> filter(List<SearchItemMaster> numbers, String input_text) { 
     input_text = input_text.toLowerCase(); 
     ArrayList<SearchItemMaster> filteredCompanyList = new ArrayList<>(); 
     for (SearchItemMaster searchItemMaster : numbers) { 

      if (is_click_search_group) { 
       final String moblieNo = searchItemMaster.getMoblieNo(); 
       if (moblieNo.contains(input_text)) { 
        filteredCompanyList.add(searchItemMaster); 
       } 
      } 

      if (is_click_search_item) { 

       final String code = searchItemMaster.getCode().toLowerCase(); 
       if (code.contains(input_text)) { 
        filteredCompanyList.add(searchItemMaster); 
       } 
      } 
     } 

     return filteredCompanyList; 
    } 

答えて

0

のすべての一致を与えます。

例:あなたが名前検索でエクシーズを入力して、9876数で、ループのような場合: -

ArrayList<SearchItemMaster> resultArrayList = new ArrayList<>(); 
for(SearchItemMaster searchItemMasterObj : searchItemMasterList) { 
    if(searchItemMasterObj.getName().contains("Xyz") && searchItemMasterObj.getNumber().contains("9876")) { 
     resultArrayList.add(searchItemMasterObj); 
    } 
} 

、その後、あなたは結果を表示するためにresultArrayListを使用することができます。

希望これはあなたを助けます。 :)

+0

それは私のために働いていない..しかし、私は解決策を見つけるが...おかげでたくさんのコードを以下と**私のため正常に動作変更しました –

0

**私はあなたの答えのための

ArrayList<SearchItemMaster> searchMasterList2 = new ArrayList<>(); 
    ArrayList<SearchItemMaster> filteredCompanyList1 = new ArrayList<>(); 
    ArrayList<SearchItemMaster> filteredCompanyList2 = new ArrayList<>(); 

    @Override 
     public boolean onQueryTextChange(String newText) { 
     if(is_click_search_item){ 
      filteredCompanyList1.clear(); 
     } 
      if(is_click_search_group){ 
       filteredCompanyList2.clear(); 
      } 
      final List<SearchItemMaster> filteredModelList = filter(searchMasterList2, newText); 
      Log.v("App", newText + ", " + searchMasterList2.size() + ", " + filteredModelList.size()); 
      adapter.animateTo(filteredModelList); 
      recyclerView.scrollToPosition(0); 
      return false; 
     } 

     for (SearchItemMaster searchItemMaster : numbers) { 

        if (is_click_search_group) { 
         final String moblieNo = searchItemMaster.getMoblieNo().toLowerCase();; 
         if (moblieNo.contains(input_text)) { 
          filteredCompanyList2.add(searchItemMaster); 
          if(filteredCompanyList1.size()!=0) { 
           filteredCompanyList.add(searchItemMaster); 
           filteredCompanyList.retainAll(filteredCompanyList1); 
          } 
          else{ 
           filteredCompanyList.add(searchItemMaster); 
           filteredCompanyList.retainAll(searchMasterList2); 
          } 
         } 
        } 

        if (is_click_search_item) { 
         final String code = searchItemMaster.getCode().toLowerCase(); 
         if (code.contains(input_text)) { 
          filteredCompanyList1.add(searchItemMaster); 
          if(filteredCompanyList2.size()!=0){ 
           filteredCompanyList.add(searchItemMaster); 
           filteredCompanyList.retainAll(filteredCompanyList2); 
          } 
          else{ 
           filteredCompanyList.add(searchItemMaster); 
           filteredCompanyList.retainAll(searchMasterList2); 
          } 
         } 
        } 
       } 
関連する問題