Android 系列 6.19 AutoCompleteTextView+SQLite实现自动检索
2017-01-14 11:21
435 查看
6.19
AutoCompleteTextView+SQLite实现自动检索
问题
虽然Android文档包含一个完整的工作示例使用一个ArrayAdapter的AutoCompleteTextView,只是替换一个SimpleCursorAdapter示例不工作。
解
使用SimpleCursorAdapter而不是ArrayAdapter有两个额外的扭曲:
•您需要告诉适配器在用户选择完成后要使用哪个列填充文本视图。
•您需要根据用户在文本字段中的最新输入,告知适配器如何重新查询。否则,它将显示游标返回的所有行,列表不会缩小以包括实际感兴趣的项目。
讨论
以下示例代码通常位于包含AutoCompleteTextView的活动的onCreate()方法中。它从其活动的布局检索AutoCompleteTextView,创建一个SimpleCursorAdapter,配置SimpleCursorAdapter以使用AutoCompleteTextView,然后将适配器分配给视图。
示例6-26中标记了Android Dev Guide中的ArrayAdapter示例的两个重要区别。它们都在下面的例子中简短的讨论。
实例6-26。 onCreate()代码
使用ArrayAdapter,不需要指定如何将用户的选择转换为字符串。但是,SimpleCursorAdapter支持在建议的文本中使用一列,在用户选择建议后,文本字段的另一列将被输入文本字段。虽然最常见的情况是使用相同的文本为建议,你在文本字段中选择后,它是不是默认值。默认是用光标的toString()表示填充文本视图 - 类似android.database.sqlite.SQLiteCursor@f00f00d0。
使用ArrayAdapter,系统负责过滤替代项,以显示那些以用户输入到文本字段为止的字符串。
SimpleCursorAdapter更灵活,但是默认行为也没有用。如果无法为适配器编写FilterQueryProvider,则无论用户键入什么类型,AutoCompleteTextView都将显示初始的一组建议。使用FilterQueryProvider,建议按预期工作。
AutoCompleteTextView+SQLite实现自动检索
问题
虽然Android文档包含一个完整的工作示例使用一个ArrayAdapter的AutoCompleteTextView,只是替换一个SimpleCursorAdapter示例不工作。
解
使用SimpleCursorAdapter而不是ArrayAdapter有两个额外的扭曲:
•您需要告诉适配器在用户选择完成后要使用哪个列填充文本视图。
•您需要根据用户在文本字段中的最新输入,告知适配器如何重新查询。否则,它将显示游标返回的所有行,列表不会缩小以包括实际感兴趣的项目。
讨论
以下示例代码通常位于包含AutoCompleteTextView的活动的onCreate()方法中。它从其活动的布局检索AutoCompleteTextView,创建一个SimpleCursorAdapter,配置SimpleCursorAdapter以使用AutoCompleteTextView,然后将适配器分配给视图。
示例6-26中标记了Android Dev Guide中的ArrayAdapter示例的两个重要区别。它们都在下面的例子中简短的讨论。
实例6-26。 onCreate()代码
final AutoCompleteTextView itemName = (AutoCompleteTextView) findViewById(R.id.item_name_view); SimpleCursorAdapter itemNameAdapter = new SimpleCursorAdapter( this, R.layout.completion_item, itemNameCursor, fromCol, toView); itemNameAdapter.setStringConversionColumn( itemNameCursor.getColumnIndexOrThrow(GroceryDBAdapter.ITEM_NAME_COL)); itemNameAdapter.setFilterQueryProvider(new FilterQueryProvider() { public Cursor runQuery(CharSequence constraint) { String partialItemName = null; if (constraint != null) { partialItemName = constraint.toString(); } return groceryDb.suggestItemCompletions(partialItemName); } }); itemName.setAdapter(itemNameAdapter);
使用ArrayAdapter,不需要指定如何将用户的选择转换为字符串。但是,SimpleCursorAdapter支持在建议的文本中使用一列,在用户选择建议后,文本字段的另一列将被输入文本字段。虽然最常见的情况是使用相同的文本为建议,你在文本字段中选择后,它是不是默认值。默认是用光标的toString()表示填充文本视图 - 类似android.database.sqlite.SQLiteCursor@f00f00d0。
使用ArrayAdapter,系统负责过滤替代项,以显示那些以用户输入到文本字段为止的字符串。
SimpleCursorAdapter更灵活,但是默认行为也没有用。如果无法为适配器编写FilterQueryProvider,则无论用户键入什么类型,AutoCompleteTextView都将显示初始的一组建议。使用FilterQueryProvider,建议按预期工作。
相关文章推荐
- AutoCompleteTextView+SQLite实现自动检索
- Android学习系列之控件 AutoCompleteTextView邮箱后缀自动补全
- Android AutoCompleteTextView实现自动补全
- Android UI控件系列:AutoCompleteTextView(自动提示)
- Android 01:AutoCompleteTextView-简单实现实现自动输入文本效果
- Android 系列 6.18实现AutoCompleteTextView
- AutoCompleteTextView 与sqlite绑定实现记住用户输入的内容并自动提示
- Android学习系列之控件 AutoCompleteTextView邮箱后缀自动补全
- 第50章、自动提示AutoCompleteTextView(从零开始学Android)
- Android自动提示--AutoCompleteTextView、MultiAutoCompleteTextView
- Android——自动完成输入框提示功能的菜单_AutoCompleteTextView
- android AutoCompleteTextView 实现输入提示,类似百度支持输入拼音提示中文(gray)
- android中的自动提示框AutoCompleteTextView
- Android:采用Google Suggest API 实现 AutoCompleteTextView的填充
- android 输入框自动匹配-AutoCompleteTextView
- Android AutoCompleteTextView实现
- Android之UI学习篇五:AutoCompleteTextView自动完成输入内容
- android AutoCompleteTextView 实现输入提示,类似百度支持输入拼音提示中文(gray)
- android 输入框自动匹配-AutoCompleteTextView
- Android AutoCompleteTextView 实现历史记录提示