2012-09-19 67 views
1

我很努力在我的Android應用中實現自定義驗證器。 我想在列表視圖中顯示從服務器檢索到的一些建議(即正確工作),即使它不以我的AutoCompleteTextView中文本的相同字母開頭。自定義Android AutoCompleteTextView驗證器

所以,即如果我寫「n」我想獲得服務器響應,這是「r」。 所以,我試圖實現一個validatore設置isValid示例,該示例控制服務器響應是否爲空。

我告訴我的代碼在這裏:

autoCompleteTextView.setAdapter(adapter); 
autoCompleteTextView.setValidator(new Validator()); 
autoCompleteTextView.performValidation(); 

這裏Validator類:

級驗證實現AutoCompleteTextView.Validator {

public boolean isValid(CharSequence text) { 
    Log.v("Test", "Checking if valid: "); 
    int i = 0; 


    if (!MainActivity.interventos.isEmpty()) { 
       return true; 

    } 

    return false; 
} 

public CharSequence fixText(CharSequence arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

isValid()的返回我總是假的,但它應該返回給我,因爲MainActivity.interventos不是空的。

Ps:如果服務器以與AutocompleteTextView中相同的字母開頭的單詞響應,則整個方法可以很好地工作。

建議? 在此先感謝

回答

1

我有一個類似的問題,我使用CustomArrayAdapter與一個viewHolder實現了一個過濾器來從服務器獲取數據。所以,你可以在你需要的自動完成列表數據中顯示。 所以驗證器沒有用,你不需要它。 享受和保持我!

1

不要自己複雜化,在這裏,我對對象給了一個簡單的代碼AutoCompleteTextview驗證

  String str = clientName.getText().toString(); 
      ListAdapter listAdapter = clientName.getAdapter(); 
      for(int i = 0; i < listAdapter .getCount(); i++) { 
       String temp = listAdapter .getItem(i).toString(); 
       if(str.compareTo(temp) == 0) 
       { 
        return; 
       } 
      } 

欲瞭解更多信息click here

+0

listAdapter.getItem(I)的ToString()被調用toString() 。獲取Object是否更好,檢查它的String並將其轉換爲String?例如。 Object object = listAdapter.getItem(i); if(object instanceof String){String string =(String)object; ...} –