Android - 按类别过滤列表
Android - Filter a List by Category
我有两个 recyclerviews,一个是 select 一个类别,另一个是属于不同类别的各种项目。当我在我的第一个回收站视图中单击一个类别时,我只想看到第二个回收站视图中显示的该类别中的项目。经过一些研究,我得到了这段代码,但是当我 select 一个类别时,所有类别中的所有项目仍然 displayed.The 过滤没有发生......我会很感激一些指示。提前致谢!
这是在我的数据提供者中 class:
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());
}
}
}
这是我的分类回收器适配器 class:
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;
}
}
});
}
您的 SampleDataProvider.displayDataItems 没有更改第二个 RecyclerView 的适配器数据。
修改代码,更新第二个recyclerview的adapter数据,调用adapter的notifyDataSetChanged
我有两个 recyclerviews,一个是 select 一个类别,另一个是属于不同类别的各种项目。当我在我的第一个回收站视图中单击一个类别时,我只想看到第二个回收站视图中显示的该类别中的项目。经过一些研究,我得到了这段代码,但是当我 select 一个类别时,所有类别中的所有项目仍然 displayed.The 过滤没有发生......我会很感激一些指示。提前致谢!
这是在我的数据提供者中 class:
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());
}
}
}
这是我的分类回收器适配器 class:
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;
}
}
});
}
您的 SampleDataProvider.displayDataItems 没有更改第二个 RecyclerView 的适配器数据。
修改代码,更新第二个recyclerview的adapter数据,调用adapter的notifyDataSetChanged