首页 > 解决方案 > 如何使用 kotlin 在 android 中使用 FirebaseRecyclerAdapter 过滤编辑文本

问题描述

请任何人帮助我使用带有 FireBaseRecyclerAdapter 的 editText 来过滤搜索。抱歉,我是 android 和 kotlin 的初学者。我有一个与 editText 和 recyclerview 关联的活动,并且在开始活动时,它显示所有对象。这里的问题是如何使用编辑文本根据名称过滤搜索recyclerview中的对象?

标签: androidfirebasekotlin

解决方案


我在这里假设您的对象是“汽车”创建一个按汽车名称过滤汽车并返回汽车列表的方法。

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()
        }
    }
});

推荐阅读