2016-03-29 11 views
0

Şu anda Firebase'den veriye filtre araması yapmak istediğim iki android çevirici, Kategori ve Puanlarım var. Şu anda sadece bir defada 1 tekerleği arayabilirim fakat filtre aramasının 2 iplikçiyi içermesini istiyorum. Nasıl arama filtreleme yapabilirsiniz öyle ki kodumu düzenleyebilirFilter Search in 2 Android Spinners

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

: Aşağıda

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

dükkan Kategori almak için kod şudur: Aşağıda

Ratings almak için koddur Kategori ve Puanlar yerine, her seferinde sadece bir tane mi? Nedeni, her iki iplikçinin de farklı dinleyicilere sahip olmasından dolayı, gerçekten nasıl çalıştığından emin değilim. Yardımınız takdir edilecektir!

cevap

0

Yorum yapılamıyor, ancak üç veri kümesine sahip olduğunuzu varsayıyorum: Kategoriler, Puanlar ve Veriler. Yayınladığınız iki bölüm, Kategorileri ve Derecelendirmeleri doldurur, sanırım Bağdaştırıcıyı tüm öğeler için dolduran başka bir bölümünüz var mı?

Başka bir varsayım, Veri bağdaştırıcınızı aynı şekilde yerleştiriyorsunuz, DataAdapter'iniz için tüm güncelleştirmeleri alıyorsunuz. Daha sonra bir DataAdapter.Filter sınıfına sahip olmalısınız.

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

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

Sen filtre sonra kategori ve değerlendirmesi için dizeyi ayrıştırmak ve uygun gördüğü şekilde veri listesini güncelleyebilirsiniz. Veri değişmediğinden, filtrelemeyi gerçekleştirmek için ağa geri gitmeye gerek yoktur.

Bunun için yapılan uyarılar, DataAdapter ürününüzün iki LIst, tam bir liste ve filtre uygulanmış bir listeye sahip olmasıdır. Firebase onDataChange her zaman tam listeyi günceller ve filtre sınıfınız her zaman filtrelenmiş listeyi günceller. GetView, getItem, get * yöntemleri de filtrelenmiş listeden dönmelidir.

Uygulamalarımdan birinde aynı filtreleme yöntemini kullandım ve iki yerine 4 düzey filtre kullanıyorum.