有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android按类别筛选列表

我有两个recyclerviews,一个用于选择类别,另一个包含属于不同类别的各种项目。当我在第一个recyclerview中单击某个类别时,我只希望在第二个recyclerview中显示该类别中的项目。经过一些研究,我得出了这段代码,但当我选择一个类别时,所有类别中的所有项目仍然显示出来。过滤没有发生。。。如果能给我一些建议,我将不胜感激。提前谢谢

这在我的dataProvider类中:

public static Predicate<DataItem> predAnimals = new Predicate<DataItem>() {
    @Override
    public boolean apply(DataItem dItem) {
        return (dItem.getCategory() == "Animals");
    }
};

public static void displayDataItems(List<DataItem> dataItemList, final Predicate<DataItem> pred) {
    for (DataItem dItem : dataItemList) {
        if (pred.apply(dItem)){
            System.out.println(dItem.toString());
        }

    }
}

这是我的分类recyclerAdapter类:

        holder.myView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String itemName = item.getItemName();
            Intent intent = new Intent (catContext, SelectionPage.class);
            intent.putExtra(ITEM_KEY_TWO, itemName);
            catContext.startActivity(intent);

            switch (itemName){
                case "Animals":
                    SampleDataProvider.displayDataItems(dataItemList, predAnimals);
                    Toast.makeText(catContext, "Animals", Toast.LENGTH_SHORT).show();
                    break;
                case "Cartoons":
                    Toast.makeText(catContext, "Cartoons", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    });
}

共 (1) 个答案

  1. # 1 楼答案

    您的SampleDataProvider。displayDataItems未更改第二个RecyclerView的适配器的数据

    更改代码以更新第二个recyclerview的适配器的数据,并调用适配器的notifyDataSetChanged