【发布时间】:2015-11-16 00:44:41
【问题描述】:
我想为我的 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条件当然需要替换!
-
当然可以?不确定这是否像您想象的那样明显。如果您没有 if,您不只是用所有键/值填充列表吗?
-
我的意思是:如果(某事)
标签: java android listview adapter searchview