java - 如何用 2 个项目过滤我的回收 View ?

标签 java android filter android-recyclerview

我有一个回收 View 和 2 个城市列表(出发城市和目的地城市列表)。我想从第一个列表中选择一个城市,然后从第二个列表中选择目的地城市,然后 recyclerview 已被过滤,仅显示具有此出发地和目的地城市的项目。问题是:当我选择出发城市时,回收器 View 变空,选择目的地城市后它就可以工作了。我希望当我选择第一个城市时,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();
}

最佳答案

您正在寻找的代码是这个:

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

关于java - 如何用 2 个项目过滤我的回收 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58047410/

相关文章:

python - 过滤字典中常见的子字典键

Java - 公共(public)字符串(字符 [] 值)

java - Java 中的舍入 double 值

Android Studio——无法编辑文件

android - 如何让 FAB 在 ViewPager 中不被移动,而成为其中的 fragment 的一部分?

Java AffinetransformOp filter() 搞砸了我的形象

python - 用于返回下一个特征以 split 树的决策树实现

java - SLF4J:无法加载类 "org.slf4j.impl.StaticLoggerBinder",API

java - Dozer 从 Set<Object> 映射到 List<ENUM>

android - 如何阻止 RecyclerView 在主行下方显示空行?