我正在尝试在列表适配器中过滤两种类型的餐馆:餐馆和咖啡馆。
以下循环将选定的餐馆类型添加到列表中,该列表将在列表适配器中刷新:
for (int i = 0; i < filteredTemp.size(); i++) {
if (filteredTemp.get(i).getType() == _typeOptions[typeSelection].toString()) {
filtered.add(filteredTemp.get(i));
}
}
为了进行测试,我有 5 家餐馆,所以 filteredTemp
尺寸为 5 且 filtered
将以空 ArrayList
开始类型 Eatery
(存储类型、名称等信息的类)
我还将使用 typeSelection = 0
进行测试这是餐厅。 filteredTemp
包含 2 家餐厅和 3 家咖啡馆。
因此这个循环应该执行5次并执行if语句中的代码两次。然而,它找到第一家餐厅并将其添加到过滤后的 ArrayList 中,当它找到第二家时,if 语句会因没有明显原因而失败,仅筛选出一家餐厅而不是两家。
有人知道发生了什么事吗?我已经使用了日志记录语句,它显示了循环执行正确的次数,并添加了第一家餐厅,但没有添加第二家餐厅。
谢谢
最佳答案
在这种情况下,您很可能不想按值比较字符串引用,而是使用 equals()
方法。
关于java - 基于对话框过滤列表适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8433535/