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

如何在Android Activity中展示SQLite数据库的平均时间查询结果

实现方案

1. 实现数据库查询方法,读取平均时间

在你自定义的SQLiteOpenHelper子类中新增查询平均时间的方法:

public double getAverageTime() {
    SQLiteDatabase db = this.getReadableDatabase();
    double avgResult = 0L;
    // 直接使用你已验证有效的查询语句
    Cursor cursor = db.rawQuery("SELECT AVG(time) FROM TIMETABLE", null);
    if (cursor.moveToFirst()) {
        // 聚合查询结果默认在第0列,根据你的time字段存储类型可替换为getLong()
        avgResult = cursor.getDouble(0);
    }
    // 释放资源,避免内存泄漏
    cursor.close();
    db.close();
    return avgResult;
}

2. 传递查询结果到目标Activity

在触发跳转的位置调用上述方法获取平均时间,通过Intent携带参数传递给展示页面:

// 替换为你自己的SQLiteOpenHelper实现类名
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
double averageTime = dbHelper.getAverageTime();

// 跳转逻辑,替换为你自己的目标Activity类名
Intent intent = new Intent(CurrentActivity.this, TargetActivity.class);
intent.putExtra("average_time_key", averageTime);
startActivity(intent);

3. 目标Activity接收数据并赋值给TextView

在展示结果的Activity的onCreate生命周期中读取参数,赋值到对应TextView:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 替换为你自己的布局文件id
    setContentView(R.layout.activity_target);

    // 读取传递的参数,默认值可自定义
    double avgTime = getIntent().getDoubleExtra("average_time_key", 0);
    // 替换为你自己的TextView控件id
    TextView avgTimeTv = findViewById(R.id.tv_average_time);

    // 按需格式化文本,示例为将毫秒值转为秒保留2位小数展示
    avgTimeTv.setText(String.format("平均时长:%.2f 秒", avgTime / 1000));
}

注意事项

  • 如果你的time字段存储的是格式化时间字符串,建议先统一转为毫秒数值存储,计算完平均值后再转为可视化格式展示,避免计算错误
  • 如果使用Room等ORM框架,只需要将SQL语句写在DAO层查询方法中即可,后续传值、赋值逻辑完全一致
  • 请确保Cursor和数据库实例使用后及时关闭,避免内存泄漏

内容的提问来源于stack exchange,提问作者Deca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:15:02