我有要在ArrayAdapter上设置的通用ArrayList,它也是一个通用类型适配器。现在,我想将ArrayList<?>
转换为ArrayList<MyClass>
。我已经搜索了很多,但无法弄清楚。谢谢你的帮助。
我有这两个通用类型的适配器和列表。
private ArrayAdapter<?> GeneralAdapter;
private ArrayList<?> GeneralList;
我正在Listview上设置此适配器。并动态地将不同类型的类添加到列表中,例如
GeneralList<State>
GeneralList<District>
设置此列表后,我正在使用notifydatasetchanged()更新适配器。
我现在只需要根据需要将此GeneralList转换为ArrayList,ArrayList。我一次添加一个项目,然后将其再次用于其他类,我清除了generalList,然后将其设置为另一个类。
答案 0 :(得分:2)
使用动态投射可以实现这一目标。
如果要从GeneralList获得状态列表,则->
List<State> states = filter(State.class, GeneralList);
这是您的过滤器功能->
static <T> List<T> filter(Class<T> clazz, List<?> items) {
return items.stream()
.filter(clazz::isInstance)
.map(clazz::cast)
.collect(Collectors.toList());
}