第一张图图片是需求
有个粗略的思路:
1. 拿到数据列表后,先按日期倒序排一下序
2. 创建一个结果数组,用来存放整理后的结果
3. 遍历数据列表
3.1 计算当前行所属周数(这里需要根据需求来,比如今天是周三到周天这段时间的话直接计算周数,周一周二的话就周数减1)
3.2 累计统计数据,比如合格lot、不良lot等
3.3 与上一行相比较,看本行与上一行的周数是否相同
3.3.1 如果相同,则将当前行插入到结果数组的头部,然后继续
3.3.2 如果不同
3.3.2.1 如果当前行的周数==上一行周数-1。则创建一个对象,属性名与普通行基本一致(这样后面拼表格的时候方便些),属性值为本周到目前为止累计的统计数据。看你的需求中周合计列颜色与普通的日数据不一样,所以这里还需要加一个类似type的属性,用于区分是周合计还是日数据。插入到结果数组的头部
3.3.2.2 如果本行与上一行的周数之间有落下的,需要生成空的属性值都为0的周合计对象,落下几个就创建几个,也是插入到结果数组的头部
3.3.3 如果没有下一个了,视同3.3.2
4.根据结果数组渲染即可。得到的结果数组的结构应该是周合计、日数据、周合计、周合计、日数据类似这样的
package com.example.my_qq;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class MyDatabase extends SQLiteOpenHelper {
static final String DBNAME="MY_QQ.db";//数据库名称
static final int VERSION=1;//版本号
static final String TBUSER="users";//用户表
static final String TBFRIEND="friends";//好友表
//修改构造函数
public MyDatabase(@Nullable Context context) {
super(context, DBNAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//创建用户表
db.execSQL("create table if not exists "+TBUSER+"(id integer not null primary key autoincrement," +
"num varchar(50)," +
"username varchar(50) not null," +
"sex varchar(2)," +
"password varchar(50), " +
"birthday varchar(60) " +
")");
//创建好友表
db.execSQL("create table if not exists "+TBFRIEND+"(id integer not null primary key autoincrement," +
"friendname varchar(50) not null," +
"logo varchar(50)," +
"head integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}