android - 如何使用 kotlin 在 android 中使用 FirebaseRecyclerAdapter 过滤编辑文本
问题描述
请任何人帮助我使用带有 FireBaseRecyclerAdapter 的 editText 来过滤搜索。抱歉,我是 android 和 kotlin 的初学者。我有一个与 editText 和 recyclerview 关联的活动,并且在开始活动时,它显示所有对象。这里的问题是如何使用编辑文本根据名称过滤搜索recyclerview中的对象?
解决方案
我在这里假设您的对象是“汽车”创建一个按汽车名称过滤汽车并返回汽车列表的方法。
public static List<Car> filterCars(List<Car> cars, String searchText) {
List<Car> filteredCars = new ArrayList<>();
Car c;
for(int i = 0; i < cars.size(); i++) {
c = cars.get(i);
if (c.getCarName().toLowerCase().contains(searchText.trim().toLowerCase())) {
filteredCars.add(c);
}
}
return filteredCars;
}
此函数接受汽车列表作为输入和要在汽车名称中搜索的字符串,并返回与汽车名称匹配的汽车列表和 searchText。
现在,在活动中,在您键入搜索文本的 EditText 中,添加 TextchangeListener。
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
//grab your list to display in recyclerview.
// suppose it is carList
List<Car> newList = filterCars(YourListOfCar, editable.toString().trim());
// now this newList contains filtered car's list
// now send it to the adapter and call adapter function
// notifyDataSetChanged()
}
}
});
推荐阅读
- node.js - 如何在 Elastic Beanstalk 上使用 Django 提供 React 应用程序?
- flutter - Flutter中的异步函数不返回null
- pycharm - 在 Windows 10 上使用 Pycharm 配置 Odoo
- sitecore8.2 - 在哪里下载 Sitecore.support.98798 补丁
- javascript - 如何使用 react-compound-timer getTime() 方法更新组件状态
- python - 在 python 中安装和导入带有 rasa-nlu 的 Matplotlib 库时出错
- javascript - 使用更新面板进行网格视图图像缩放的问题
- python - python中列表和函数的问题
- java - 如何使用 Fedora 替代品为 Maven 设置 Jdk 版本
- java - 为什么在平均情况下冒泡排序比选择排序表现更好