我有一个城市列表(大约2500个)。我希望用户在从该列表中键入edittextbox时获取自动建议。这是如何实现的?我一直在搜索谷歌,但找不到任何关于此的教程。非常感谢任何帮助。 感谢。
答案 0 :(得分:2)
您应该使用AutoCompleteTextView来实现此目标。
以下代码段显示了如何创建文本视图,该视图在用户输入时建议了各个国家/地区名称:
public class CountriesActivity extends Activity {
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"
};
}
答案 1 :(得分:1)
使用AutoCompleteTextview,这是来自开发网站(页面底部)的教程。 http://developer.android.com/guide/topics/ui/controls/text.html
答案 2 :(得分:0)
您可以使用“Filter”从其他列表中进行搜索。 实现您自己的过滤器[MyFilter extends Filter]并覆盖“FilterResults performFiltering(CharSequence前缀)”和“void publishResults(CharSequence constraint,FilterResults results)”方法,以在您自己的数据(国家/地区列表)上实现您自己的搜索逻辑。
在适配器中添加一个getMyFilter()方法,该方法将返回“new myFilter” 在“EditText”中添加“TextWatcher” 在TextWatcher的“onTextChanged()”方法中,通过调用myAdapter.getMyFilter()获取过滤器。在该过滤器上,调用“myFilter.filter(myTypedString)”。
过滤后“ void publishResults(CharSequence约束,FilterResults结果)”方法将被调用。在其中,更改实际的适配器数据以刷新UI。