2016-03-29 79 views
0

我目前有两个android spinners,Category和Ratings,我想用Firebase的数据做一个过滤搜索。现在我只能一次搜索1个微调,但我希望过滤器搜索包含2个微调。过滤器搜索在2 Android的Spinners

下面是检索评级代码:

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

如何编辑我的代码,这样我可以过滤搜索通过类别和评级,而不是一次一个?原因是因为两个纺纱人有不同的倾听者,所以我不确定它是如何工作的。您的帮助将不胜感激!

回答

0

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

另一个假设是您以同样的方式填充您的数据适配器,获取所有更新以便填充您的DataAdapter。你应该有一个DataAdapter.Filter班。

Categories.onWhatever -> doFilterData() 
Ratings.onWhatever -> doFilterData() 

doFilterData() 
    Get Category 
    Get Rating 
    DataAdapater.getFilter().filter(category "~" rating) 

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

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

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