2012-09-19 65 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; ...} –