2017-06-19 63 views
0

我創建了一個列表視圖,其中包含多個行。每行,具有輸入樣式的Edittext都是數字,Textview顯示listview中所有editext的總值。我還在上面創建了一個搜索框。我想根據列表的特定字段實現搜索功能。我怎樣才能做到這一點?任何幫助將不勝感激。 就像是:
example在ListView中使用Edittext進行搜索在

+0

您想要搜索哪些值?發佈您的代碼 –

+0

使用左側Textview中的值進行搜索。 我的英文不好,希望你明白我的意思 –

回答

0

試試這個

searchView.setOnEditorActionListener(new EditText.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, 
            KeyEvent event) { 
     return true; 
    } 
}); 
addTextChangeListener(); 

現在創建這個方法

private void addTextChangeListener() { 
searchView.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence query, int start, int before, int count) { 

     query = query.toString().trim().toLowerCase(); 

     final ArrayList<CityDataModel> filteredList = new ArrayList<>(); 



     final CharSequence finalQuery = query; 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 

       // Clear the filter list 
       filteredList.clear(); 

       // If there is no search value, then add all original list items to filter list 
       if (TextUtils.isEmpty(finalQuery)) { 

        filteredList.addAll(cities); 

       } else { 
        // Iterate in the original List and add it to filter list... 
        for (CityDataModel item : cities) { 
         if (item.getCity_name().toLowerCase().contains(finalQuery.toString().toLowerCase()) 
           ) { 
          // Adding Matched items 
          filteredList.add(item); 
         } 
        } 
       } 

       // Set on UI Thread 
       ((Activity) context).runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         // Notify the List that the DataSet has changed... 
         adapter = new SearchCityAdapter(SearchCityClass.this, filteredList); 
         recyclerSearchCity.setAdapter(adapter); 
        } 
       }); 

      } 
     }).start(); 


    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}); 

}

0

編輯文本的變化時就會發生這種方法。這是我的樣品。你可以修改爲你的自我。

et_search.addTextChangedListener(new TextWatcher() { 
           @Override 
           public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

           } 

           @Override 
           public void onTextChanged(CharSequence s, int start, int before, int count) { 
//         professional_add_List.contains(s); 
           } 

           @Override 
           public void afterTextChanged(Editable s) { 
//         String text = et_search.getText().toString().toLowerCase(Locale.getDefault()); 
            addpartnerAdapter.getFilter().filter(s.toString()); 

            if (addpartnerAdapter.isEmpty()) { 
             lst_professional.setVisibility(View.GONE); 
             txt_identifier.setVisibility(View.VISIBLE); 
            } else { 
             lst_professional.setVisibility(View.VISIBLE); 
             txt_identifier.setVisibility(View.GONE); 
            } 
           } 
          });