【问题标题】:how to filter my recyclerview with 2 items?如何用 2 个项目过滤我的回收站视图?
【发布时间】:2019-09-22 08:28:41
【问题描述】:

我有一个 recyclerview 和 2 个城市列表(始发城市和目的地城市列表)。我想从第一个列表中选择一个城市,然后从第二个列表中选择目标城市,然后 recyclerview 已被过滤,只显示具有此起点和目标城市的项目。问题是:当我选择出发城市时,recyclerview 变为空,在选择目的地城市后它可以工作。我希望当我选择第一个城市 recyclerview 时显示具有此起源城市的项目并且不会变为空。 这是我的过滤功能:

public void filter()
{
    String filterOrigin = txtOriginCity.getText().toString();
    String filterDestination = txtDestinationCity.getText().toString();

    for (int i = 0; i < freightsList.size(); i++)
        hold.add(freightsList.get(i));

    freightsList.clear();

    if (filterDestination.equals("allCities") && filterOrigin.equals("allCities"))

        freightsList.addAll(hold);

    else if (filterDestination.equals("allCities") || filterOrigin.equals("allCities"))
    {
        for (int i = 0; i < hold.size(); i++)
        {
            if (hold.get(i).getDestination_city().equals(filterDestination)
                    ||
                    hold.get(i).getOrigin_city().equals(filterOrigin))
            {
                freightsList.add(hold.get(i));
            }
        }
    } else if (!(filterDestination.equals("allCities") && filterOrigin.equals("allCities")))
    {
        for (int i = 0; i < hold.size(); i++)
        {
            if (hold.get(i).getDestination_city().equals(filterDestination)
                    &&
                    hold.get(i).getOrigin_city().equals(filterOrigin))
            {
                freightsList.add(hold.get(i));
            }
        }
    }

    adapter.notifyDataSetChanged();
}

【问题讨论】:

    标签: java android filter android-recyclerview


    【解决方案1】:

    您要查找的代码是这个:

    public void filter()
    {
        String filterOrigin = txtOriginCity.getText().toString();
        String filterDestination = txtDestinationCity.getText().toString();
    
        for (int i = 0; i < freightsList.size(); i++)
            hold.add(freightsList.get(i));
    
        freightsList.clear();
    
        if (filterDestination.equals("allCities") && filterOrigin.equals("allCities"))
    
            freightsList.addAll(hold);
    
        else 
        {
            for (int i = 0; i < hold.size(); i++)
            {
                if (hold.get(i).getDestination_city().equals(filterDestination)
                        ||
                        hold.get(i).getOrigin_city().equals(filterOrigin))
                {
                    freightsList.add(hold.get(i));
                }
            }
        }
    
        adapter.notifyDataSetChanged();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 2022-06-14
      相关资源
      最近更新 更多