java - 自动完成 TextView Android。完成首字母
问题描述
我在 autoCompleteTextView 中的适配器是这样的:
- -苹果-梨-橙-香蕉-葡萄
如果我输入“p”,它现在的工作方式,在下拉列表中会出现苹果、梨和葡萄,因为它们是匹配的,但我只想让它显示梨,因为它是唯一以 p 开头的单词。所以,问题是:如何告诉 autoComplete 的 dropDownList 显示与以我正在搜索的内容开头的单词的匹配,而不是显示包含它的单词在不是第一个的其他位置。例如,如果我输入“pe”,我只想显示梨而不是葡萄,因为梨以该字符串开头。这是我的代码
ArrayList<String> data = dbHelper.getDataAsString();
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, data);
autoCompleteTv.setAdapter(adapter);
autoCompleteTv.setThreshold(2);
解决方案
以此为参考。我只是在制作后测试了这段代码,它应该可以正常工作。
假设您的列表仅属于字符串类型。
private String[] searchableList = {"apple", "pear", "grape"};
我制作了这个函数,它接受query
并返回新格式化的字符串列表。
private List<String> filterQuery(String query) {
// This takes all strings items which are valid with query
List<String> filterList = new ArrayList<>();
// Looping into each item from the list
for (String currentString : searchableList) {
// Make sure everything is lower case.
String myString = currentString.toLowerCase(Locale.getDefault());
// Take first two characters from the string, you may change it as required.
String formatTitle = myString.substring(0, 2);
// If query matches the current string add it to filterList
if (formatTitle.contains(query)) {
filterList.add(formatTitle);
}
}
return filterList;
}
让我知道事情的后续。
推荐阅读
- java - 如何按自定义顺序对值进行排序
- go - 是否在 go 中为 struct atomic 赋值?
- python-3.x - 在散景图中过滤日期时间
- javascript - Puppeteer 浏览页面并评估每个页面
- django - 使用 mongodb 作为 django 应用程序的第二个数据库
- hadoop - hadoop停止的节点仍然在资源管理器中显示为“正在运行”?
- c# - 根据状态码向响应添加标头
- javascript - 在 React 中,当我在另一个组件中触发 Add 函数时,如何正确使用钩子来更新一个组件?
- scala - 使用 Scala Spark 将文本文件转换为数据框
- ios - 如何在 Mac Catalyst 应用程序中收听按键?