You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:07:29