Android中创建自定义Object类存储用户训练数据
嘿,我来帮你搞定这个自定义类的设计!根据你描述的训练数据结构,我们可以拆成两个核心类,完美对应你的需求:
1. 先定义单个活动的类:
WorkoutActivity 这个类用来存储每个活动的具体数据,比如活动名称和你提到的其他相关信息(比如时长、组数、重量之类的,你可以根据实际需求扩展)。
Java版本:
public class WorkoutActivity implements Serializable { // 活动名称 private String activityName; // 这里可以添加其他活动相关数据,比如示例的时长、组数 private int durationMinutes; private int sets; // 无参构造函数(如果用到Gson、Room等库,这个很重要) public WorkoutActivity() {} // 带参数的构造函数 public WorkoutActivity(String activityName, int durationMinutes, int sets) { this.activityName = activityName; this.durationMinutes = durationMinutes; this.sets = sets; } // Getter和Setter方法,用于访问和修改属性 public String getActivityName() { return activityName; } public void setActivityName(String activityName) { this.activityName = activityName; } public int getDurationMinutes() { return durationMinutes; } public void setDurationMinutes(int durationMinutes) { this.durationMinutes = durationMinutes; } public int getSets() { return sets; } public void setSets(int sets) { this.sets = sets; } }
Kotlin版本(更简洁):
data class WorkoutActivity( val activityName: String, val durationMinutes: Int, val sets: Int // 这里继续添加其他你需要的属性即可 ) : Serializable
2. 再定义训练项的类:
Workout 这个类对应你说的“Workout 1”“Workout 2”这类训练项,包含训练名称、颜色,以及该训练下的所有活动列表。
Java版本:
import java.io.Serializable; import java.util.List; public class Workout implements Serializable { // 训练名称 private String workoutName; // 训练颜色(可以用String存颜色值,比如"#FF0000",或者用int存Color类的数值) private String workoutColour; // 该训练下的所有活动列表 private List<WorkoutActivity> workoutActivities; // 无参构造函数 public Workout() {} // 带参数的构造函数 public Workout(String workoutName, String workoutColour, List<WorkoutActivity> workoutActivities) { this.workoutName = workoutName; this.workoutColour = workoutColour; this.workoutActivities = workoutActivities; } // Getter和Setter方法 public String getWorkoutName() { return workoutName; } public void setWorkoutName(String workoutName) { this.workoutName = workoutName; } public String getWorkoutColour() { return workoutColour; } public void setWorkoutColour(String workoutColour) { this.workoutColour = workoutColour; } public List<WorkoutActivity> getWorkoutActivities() { return workoutActivities; } public void setWorkoutActivities(List<WorkoutActivity> workoutActivities) { this.workoutActivities = workoutActivities; } }
Kotlin版本:
import java.io.Serializable data class Workout( val workoutName: String, val workoutColour: String, val workoutActivities: List<WorkoutActivity> ) : Serializable
一些额外的小提示
- 如果你的需求是要把这些对象存储到本地(比如SharedPreferences)或者通过网络传输,实现
Serializable接口是个简单的选择;如果是要在Android组件间传递对象,Parcelable会更高效,你可以替换Serializable为Parcelable并实现对应的方法。 - 如果你用的是Room数据库,记得给类添加
@Entity注解,并且处理好实体间的关系(比如用@ForeignKey关联Workout和WorkoutActivity)。 - 实际使用时,你可以这样创建实例:
// 创建几个活动 WorkoutActivity pushUp = new WorkoutActivity("俯卧撑", 10, 3); WorkoutActivity running = new WorkoutActivity("跑步", 20, 1); // 把活动放到列表里 List<WorkoutActivity> activities = new ArrayList<>(); activities.add(pushUp); activities.add(running); // 创建一个训练项 Workout myWorkout = new Workout("日常训练", "#FF6B6B", activities);
这样整个结构就完全匹配你描述的需求啦,你可以根据自己的实际业务场景调整类里的属性哦!
内容的提问来源于stack exchange,提问作者Luke C
相关产品推荐
相关产品推荐

