Android 使用retrofit2库实现网络功能,混淆后报错:java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
时间: 2024-04-18 20:20:12 浏览: 300
Android异常 java.lang.IllegalStateException解决方法
根据提供的引用内容,可以看出这是一个Android编程的问题,需要使用Bundle传递对象。在这个问题中,需要创建一个Person类,该类需要实现Serializable接口,以便在不同的Activity之间传递。在HobbyActivity中,需要创建一个ArrayList<Person>泛型集合,保存四个Person类的对象,并使用ListView显示姓名。当单击姓名时,需要进入MessageActivity,显示姓名、年龄和爱好。最终结果应该显示BMI计算器张三李四王五赵权。
具体步骤如下:
1. 创建Person类,该类需要实现Serializable接口,以便在不同的Activity之间传递。
2. 在HobbyActivity中,创建一个ArrayList<Person>泛型集合,保存四个Person类的对象,并使用ListView显示姓名。
3. 当单击姓名时,使用Intent传递该Person对象到MessageActivity中。
4. 在MessageActivity中,获取传递过来的Person对象,并显示姓名、年龄和爱好。
代码示例:
1. Person类的定义:
```
public class Person implements Serializable {
private String name;
private int age;
private String hobby;
public Person(String name, int age, String hobby) {
this.name = name;
this.age = age;
this.hobby = hobby;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getHobby() {
return hobby;
}
}
```
2. 在HobbyActivity中,创建ArrayList<Person>泛型集合,并使用ListView显示姓名:
```
ArrayList<Person> personList = new ArrayList<>();
personList.add(new Person("张三", 20, "篮球"));
personList.add(new Person("李四", 22, "足球"));
personList.add(new Person("王五", 25, "乒乓球"));
personList.add(new Person("赵权", 18, "羽毛球"));
ListView listView = findViewById(R.id.listView);
ArrayAdapter<Person> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, personList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(HobbyActivity.this, MessageActivity.class);
intent.putExtra("person", personList.get(position));
startActivity(intent);
}
});
```
3. 在MessageActivity中,获取传递过来的Person对象,并显示姓名、年龄和爱好:
```
TextView nameTextView = findViewById(R.id.nameTextView);
TextView ageTextView = findViewById(R.id.ageTextView);
TextView hobbyTextView = findViewById(R.id.hobbyTextView);
Intent intent = getIntent();
Person person = (Person) intent.getSerializableExtra("person");
nameTextView.setText(person.getName());
ageTextView.setText(String.valueOf(person.getAge()));
hobbyTextView.setText(person.getHobby());
```
阅读全文