【问题标题】:Filter Search in 2 Android Spinners在 2 个 Android 微调器中过滤搜索
【发布时间】:2016-03-29 17:16:27
【问题描述】:

我目前有两个 android spinners,Category 和 Ratings,我想使用 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();

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

【问题讨论】:

    标签: android search filter spinner


    【解决方案1】:

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

    另一个假设是您正在以相同的方式填充 Data 适配器,获取所有更新以便填充 DataAdapter。然后你应该有一个DataAdapter.Filter 类。

    Categories.onWhatever -> doFilterData()
    Ratings.onWhatever -> doFilterData()
    
    doFilterData()
      Get Category
      Get Rating
      DataAdapater.getFilter().filter(category "~" rating)
    

    然后您的过滤器可以解析字符串的类别和评级,并根据需要更新数据列表。由于数据没有改变,因此无需返回网络执行过滤。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 2017-04-02
      • 2012-11-13
      • 2014-07-28
      • 1970-01-01
      相关资源
      最近更新 更多