gpt4 book ai didi

java - 如何根据 searchView 输入过滤字符串

转载 作者:行者123 更新时间:2023-11-30 10:58:40 24 4
gpt4 key购买 nike

我想为我的 searchView 创建建议。

我有一个 listView 和一个包含整个联系人列表的 map 。我创建了一个自定义适配器来填充 ListView。我还有一个 searchView 允许用户搜索特定联系人。

现在我正在使用 OnQueryTextChange,但我不知道如何创建另一个 Map 将其传递到适配器中以便仅显示用户键入的名称。

我卡住了,因为我只想根据第一个字母添加联系人姓名。示例:如果用户键入“m”,那么我想创建一个所有联系人都以“m”开头的 map ,然后用户继续添加字母, map 应该过滤联系人,直到只有一个名字。

代码如下:

@Override
public boolean onQueryTextChange(String newText) {
for (String name : mKeys) { // here Im looping the keys of my contact Map
if (something) {
Map.put(name, contact.get(name)); // contact is the contact Map
}
createContactAdapter(Map);
}
}

return false;
}

感谢帮助

编辑

我更新的代码:

@Override
public boolean onQueryTextChange(String newText) {
Toast.makeText(ContactsActivity.this, newText, Toast.LENGTH_SHORT).show();
for (String name : mKeys) {
name = name.trim();
if (name.startsWith(newText) && newText.length() > 0) {
mFilteredMap.put(name, "00000000000"); // NPE here

if (mFilteredMap.size() > 1) {
createContactAdapter(mFilteredMap);
}
}


}
return false;

首先让我们只处理添加函数。

最佳答案

我想我现在明白了。是……

if (name.startsWith(newText))

你在找什么?

String.startsWith()

这将查看键是否以搜索中的文本开头;如果是,请将其添加到 map 中。

此时,您将拥有第一个字母的所有 键的映射。如果您想过滤此 map ,则必须进行 empty 检查以查看您正在处理哪组键。然后你必须删除所有条目......

if (!name.startsWith(newText)) {/* 删除它 */}

这告诉您给定的键匹配搜索,然后您将其删除。

关于java - 如何根据 searchView 输入过滤字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32151034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com