我有一个城市列表(其中大约 2500 个)。我希望用户在从该列表中输入编辑文本框时获得自动建议。这是如何实现的?我已经彻底搜索了谷歌,但找不到任何关于此的教程。非常感谢任何帮助。谢谢。
3 回答
您应该使用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"
};
}
使用 AutoCompleteTextview,这是来自开发站点的教程(页面底部)。http://developer.android.com/guide/topics/ui/controls/text.html
您可以使用“过滤器”从您的其他列表中进行搜索。实现您自己的过滤器 [MyFilter extends Filter] 并覆盖“FilterResults performFiltering(CharSequence prefix)”和“void publishResults(CharSequence constraint,FilterResults results)”方法以在您自己的数据(国家列表)上实现您自己的搜索逻辑。
在您的适配器中添加一个 getMyFilter() 方法,该方法将返回一个“新的 myFilter” 将“TextWatcher”添加到您的“EditText” 在 TextWatcher 的“onTextChanged()”方法中,通过调用 myAdapter.getMyFilter()”获取您的过滤器。在该过滤器上,调用“myFilter.filter(myTypedString)”。
过滤后“ void publishResults(CharSequence constraint,FilterResults results) ”方法将被调用。在其中,更改您的实际适配器数据以刷新您的 UI。