如何在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
相关产品推荐
相关产品推荐

