在2个Android Spinners中过滤搜索

时间:2016-03-29 17:16:28

标签: android search filter spinner

我目前有两个Android微调器,类别和评级,我想用Firebase中的数据进行过滤搜索。现在我一次只能搜索1个微调器,但我希望搜索过滤器包含2个微调器。

以下是检索评分的代码:

 firebase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            shops = new ArrayList<>();
            for (DataSnapshot ds : dataSnapshot.getChildren()) {

                if (ds.child("ratings").getValue().toString().equals(userSelectRatings)) {
                    shopName = ds.child("shop_name").getValue().toString();
                    phoneNumber = ds.child("phone_no").getValue().toString();
                    categoryOfShop = ds.child("category").getValue().toString();
                    email = ds.child("email").getValue().toString();
                    shops.add(new Shop(shopName, categoryOfShop, phoneNumber, userSelectRatings, email));
                    initializeAdapter();
                }
            }
        }

以下是检索商店类别的代码:

firebase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            shops = new ArrayList<>();

            for (DataSnapshot ds : dataSnapshot.getChildren()) {

                if (ds.child("category").getValue().toString().equals(userSelectCategory)) {
                    shopName = ds.child("shop_name").getValue().toString();
                    phoneNumber = ds.child("phone_no").getValue().toString();
                    ratingsOfShop = ds.child("ratings").getValue().toString();
                    email = ds.child("email").getValue().toString();
                    shops.add(new Shop(shopName, userSelectCategory, phoneNumber, ratingsOfShop, email));
                    initializeAdapter();

如何编辑我的代码,以便我可以按类别和评级筛选搜索,而不是一次只筛选一个?原因是因为两个微调器都有不同的听众,所以我不确定它是如何工作的。我们将非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

无法发表评论,但我假设您有三组数据:类别,评级和数据。您发布的两个部分填充了类别和评分,我猜你还有另一部分为所有项目填充了适配器?

另一个假设是您以相同的方式填充数据适配器,获取所有更新以便填充DataAdapter。然后你应该有一个Categories.onWhatever -> doFilterData() Ratings.onWhatever -> doFilterData() doFilterData() Get Category Get Rating DataAdapater.getFilter().filter(category "~" rating) 类。

{{1}}

然后,过滤器可以解析字符串的类别和评级,并在其认为合适时更新数据列表。因为数据没有改变,所以不需要回到网络来执行过滤。

需要注意的是,您的DataAdapter有两个LIsts,一个完整列表和一个筛选列表。 Firebase onDataChange始终更新完整列表,您的过滤器类始终更新过滤后的列表。你的getView,getItem,get *方法也应该从过滤后的列表中返回。

我在我的某个应用程序中使用了相同的过滤方法,而且我使用了4级过滤而不是2级过滤。