Android应用启动崩溃报错User cannot be cast to java.util.List如何解决
问题原因
- 崩溃的直接原因是构造
HarryAdapter时参数类型不匹配:HarryAdapter的第二个入参要求是List<User>类型的集合,你却传入了单个User对象user,还强行做了类型转换,User类和List接口没有继承实现关系,运行时必然抛出ClassCastException,也就是你看到的User cannot be cast to java.util.List错误。 - 代码中还存在一处语法错误:
List<User> arr=new<User>ArrayList();的泛型写法不符合Java规范,正确的写法是new ArrayList<User>()。
解决方案
修正两处代码即可:修改ArrayList初始化语句,同时给适配器传入已经构建好的List<User>集合对象arr,而不是单个User实例。
修正后的核心代码如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mylist=findViewById(R.id.list); User user=new User(); user.setF_name("ali"); user.setF_pic(R.drawable.ora); // 修正ArrayList初始化的泛型写法 List<User> arr=new ArrayList<User>(); arr.add(user); // 传入已添加user的集合arr,删除错误的强制类型转换 HarryAdapter ad=new HarryAdapter(this, arr); mylist.setAdapter(ad); }
内容的提问来源于stack exchange,提问作者Mubashar Ali
相关产品推荐
相关产品推荐

