来自Edittext Android的listview中的文本过滤

时间:2013-04-15 08:11:11

标签: android filter android-listview android-edittext autosuggest

我有一个城市列表(大约2500个)。我希望用户在从该列表中键入edittextbox时获取自动建议。这是如何实现的?我一直在搜索谷歌,但找不到任何关于此的教程。非常感谢任何帮助。 感谢。

3 个答案:

答案 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。