2013-07-07 80 views
1

嘿傢伙我需要我的搜索功能,像聯繫人一樣行事。我從服務器中檢索參與者列表,並在用戶搜索結果時重建它。胡佛我只能在他們輸入完整的名字時才能使用它。讓我告訴你我的代碼。我曾嘗試過很多組合。任何想法?這是一個爲兒童飢餓聯盟捐贈的應用程序。 =]onTextChanged,不能讓它正常工作

這只是在for循環中添加的每個名稱僅供參考

if (searchQ.contains(child.first_name.toLowerCase()) 
|| searchQ.matches(child.last_name.toLowerCase()) { 

id = child.id; 
addChildToList(child); 

} 

if (searchQ.matches("")){ 
    addChildToList(child); 


} 

這裏是我的textwatcher

public void searchChild(){ 
    final EditText ET = (EditText) findViewById(R.id.search); 


    // create the TextWatcher 
    TextWatcher textWatcher = new TextWatcher() { 

     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 



      // Rebuilds the list 
      String searchQ = ET.getText().toString(); 
      getChildrenListSearch(searchQ); 


     } 

     @Override 
     public void afterTextChanged(Editable editable) { 
      // Remove rows that do no match 
      TableLayout tl = (TableLayout)findViewById(R.id.childList); 
      tl.removeAllViews(); 


     } 
    }; 

    //we must add the textWatcher to our EditText 
    ET.addTextChangedListener(textWatcher); 

    } 

回答

1

其他方式周圍...

if (searchQ.contains(child.first_name.toLowerCase()) 
    || searchQ.matches(child.last_name.toLowerCase()) { 

    id = child.id; 
    addChildToList(child); 

    } 

到這...

if (child.first_name.toLowerCase().contains(searchQ) 
     || searchQ.matches(child.last_name.toLowerCase()) { 

     id = child.id; 
     addChildToList(child); 

     } 
+0

這個孩子打破了......根本不工作 – NightSkyCode

+0

它給你什麼錯誤?你也明白爲什麼它需要這樣嗎?您正在查看搜索字詞是否部分匹配子名稱而不是其他方式 –

+0

nvm您的cbode工作正常只需切換幾件事情,我沒有這樣看待它!我現在明白了!有沒有辦法讓它等於忽略案件,並在同一時間包含沒有我寫另一個功能? – NightSkyCode