0

我有一个城市列表(其中大约 2500 个)。我希望用户在从该列表中输入编辑文本框时获得自动建议。这是如何实现的?我已经彻底搜索了谷歌,但找不到任何关于此的教程。非常感谢任何帮助。谢谢。

4

3 回答 3

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"
     };
 }
于 2013-04-15T08:14:04.967 回答
1

使用 AutoCompleteTextview,这是来自开发站点的教程(页面底部)。http://developer.android.com/guide/topics/ui/controls/text.html

于 2013-04-15T08:14:48.467 回答
0

您可以使用“过滤器”从您的其他列表中进行搜索。实现您自己的过滤器 [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。

于 2013-04-15T09:23:29.820 回答