Android AutoCompleteTextView:如何确保输入的值来自提供的建议?
我期待在我的应用程序中使用AutoCompleteTextView。我正在努力!我正在设置此视图的值列表,其中有300多个值。我想要实现的是,我希望用户输入文本并根据文本过滤值,而不是将其置于微调器中,滚动到所有可用值并选择一个。我还要确保输入的值来自可用的300个值 我已计划继续,当用户在该字段中输入值时,当他转到下一个字段时,我将使用这300个可用值验证该值!但我觉得这是一种耗时的方法 请帮助我,如果有一个有效的方法来实现这一点 更新: 从这个开始。Android AutoCompleteTextView:如何确保输入的值来自提供的建议?,android,autocompletetextview,Android,Autocompletetextview,我期待在我的应用程序中使用AutoCompleteTextView。我正在努力!我正在设置此视图的值列表,其中有300多个值。我想要实现的是,我希望用户输入文本并根据文本过滤值,而不是将其置于微调器中,滚动到所有可用值并选择一个。我还要确保输入的值来自可用的300个值 我已计划继续,当用户在该字段中输入值时,当他转到下一个字段时,我将使用这300个可用值验证该值!但我觉得这是一种耗时的方法 请帮助我,如果有一个有效的方法来实现这一点 更新: 从这个开始。 问问谷歌吧。找到了一个快速的例子 大多
问问谷歌吧。找到了一个快速的例子 大多数示例使用strings.xml中的静态值填充列表。不是从strings.xml填充,而是修改适配器以从您拥有的任何内容(可能是数组)进行追加 至于问题的第二部分,验证用户是否正在输入列表中的值:1如果在文本框中输入非列表值,则自动完成列表将不会显示任何内容。2如果用户输入非列表值并单击enter键,您可以自己进行验证
ed = (EditText) findViewById(R.id.quickSearch);
ed.setImeActionLabel("Search",EditorInfo.IME_ACTION_SEARCH);
ed.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
// do your validation here
我已经用过这个了。我只想确保列表中必须存在任何用户输入!谢谢你。我已经这样做了。我只是想知道是否有任何有效的方法可以进行验证。我唯一担心的是,如果列表中的值更多,比如假设1000,那么在这种情况下,进行比较所需的时间将太长!请参阅我的编辑,我也会尝试使用验证程序。
public class CountriesActivity extends Activity implements TextWatcher{
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.countries);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, COUNTRIES);
AutoCompleteTextView textView = (AutoCompleteTextView)
findViewById(R.id.countries_list);
textView.setAdapter(adapter);
}
private static final String[] COUNTRIES = new String[] {
"Belgium", "France", "Italy", "Germany", "Spain"
};
@Override
public void afterTextChanged(Editable s) {
if(!COUNTRIES.contains(s.toString();
textView.setText("");
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
}
ed = (EditText) findViewById(R.id.quickSearch);
ed.setImeActionLabel("Search",EditorInfo.IME_ACTION_SEARCH);
ed.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
// do your validation here