我想在android中的列表中使用EditText来应用搜索过滤器。
现在我正在使用for循环(代码下面)。
private List<AllAttendance> filter(List<AllAttendance> mAttendanceList, CharSequence charSequence) {
final String text = String.valueOf(charSequence).toLowerCase();
List<AllAttendance> filteredList = new ArrayList<>();
for (AllAttendance attendance : mAttendanceList){
if (attendance.getMandalName().toLowerCase().contains(text) || attendance.getSabhaName().toLowerCase().contains(text) || attendance.getSabhaDate().toLowerCase().contains(text))
filteredList.add(attendance);
}
return filteredList;
}
上面的代码工作正常。但是我用linq替换n我没有得到任何记录,我在列表中有预先记录。
private List<AllAttendance> filter(List<AllAttendance> mAttendanceList, CharSequence charSequence) {
final String text = String.valueOf(charSequence).toLowerCase();
List<AllAttendance> filteredList =
Linq.stream(mAttendanceList)
.where(c -> c.getSabhaName().contains(text))
.toList();
return filteredList;
}
答案 0 :(得分:0)
首先Stream API甚至没有where
方法。您应该在Stream上使用filter
来实现过滤功能。
替换它:
List<AllAttendance> filteredList =
Linq.stream(mAttendanceList)
.where(c -> c.getSabhaName().contains(text))
.toList();
使用:
List<AllAttendance> filteredList =
mAttendanceList.stream()
.filter(c -> c.getSabhaName().contains(text))
.collect(Collectors.toList());