我有一个通用的 ArrayList,我正在 ArrayAdapter 上设置它,它也是一个通用类型适配器。现在,我想转换ArrayList<?>
至ArrayList<MyClass>
。我已经搜索了很多,但无法弄清楚。感谢您的帮助。
我有这 2 个通用类型适配器和列表。
private ArrayAdapter<?> GeneralAdapter;
private ArrayList<?> GeneralList;
我正在 ListView 上设置此适配器。并动态地将不同类型的类添加到列表中。就像
GeneralList<State>
GeneralList<District>
设置此列表后,我将使用notifydatasetchanged()更新适配器。
我现在只需要根据需要将此 GeneralList 转换为 ArrayList,ArrayList 即可。我一次添加一个项目,为了再次将其用于其他类,我清除了 GeneralList,然后将其设置为另一个类。
最佳答案
使用动态转换你可以实现这一点。
如果您想要 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());
}
关于java - 将 ArrayList<?> 转换为 ArrayList<ClassName>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52161710/