增加了显示当月总收入和总支出的功能,增加了选择收支类型的功能,删去了删除账目后恢复的功能。
添加了一个收支类型的字段:
package com.example.cashbook;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class Notes {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "money")
private int money;
@ColumnInfo(name = "money_data")
private String moneyData;
@ColumnInfo(name = "other_info")
private String otherInfo;
@ColumnInfo(name = "money_type")
private String moneyType;
public Notes() {
}
public Notes(int money, String moneyData, String otherInfo, String moneyType) {
this.money = money;
this.moneyData = moneyData;
this.otherInfo = otherInfo;
this.moneyType = moneyType;
}
public String getMoneyType() {
return moneyType;
}
public void setMoneyType(String moneyType) {
this.moneyType = moneyType;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public String getMoneyData() {
return moneyData;
}
public void setMoneyData(String moneyData) {
this.moneyData = moneyData;
}
public String getOtherInfo() {
return otherInfo;
}
public void setOtherInfo(String otherInfo) {
this.otherInfo = otherInfo;
}
}
增加了查询所有支出和收入的金额:
package com.example.cashbook;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
@Dao
public interface NotesDao {
@Insert
void insertNote(Notes… notes);
@Update
void updateNote(Notes… notes);
@Query("select * from notes")
LiveData
为方便使用,使得数据库的操作可以在主线程中执行:
package com.example.cashbook;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;
@Database(entities = {Notes.class},version = 2,exportSchema = false)
public abstract class NotesDatabase extends RoomDatabase {
private static NotesDatabase INSTANCE;
static synchronized NotesDatabase getDatabase(Context context){
if (INSTANCE == null){
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),NotesDatabase.class,"notes_database")
.addMigrations(VERSION_1_2)
.allowMainThreadQueries()
.build();
}
return INSTANCE;
}
public abstract NotesDao getNotesDao();
private static final Migration VERSION_1_2 = new Migration(1,2) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE notes ADD COLUMN money_type varchar");
}
};
}
增加了获取总支出和总收入金额的方法:
package com.example.cashbook;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import java.util.List;
public class NotesViewModel extends AndroidViewModel {
private NotesRepository repository;
public NotesViewModel(@NonNull Application application) {
super(application);
repository = new NotesRepository(application);
}
public void updateNote(Notes… notes){
repository.updateNote(notes);
}
public void insertNote(Notes… notes){
repository.insertNote(notes);
}
public LiveData> getAllList(){
return repository.getNotesList();
}
public LiveData> getAllListByPattern(String pattern){
return repository.getNotesListByPattern(pattern);
}
public void deleteNote(Notes… notes){
repository.deleteNote(notes);
}
//获得总收入
public int getMoneyIn(){
List<Integer> moenyIn = repository.getMoenyIn();
int sum = 0;
for (Integer integer : moenyIn) {
sum += integer.intValue();
}
return sum;
}
//获得总支出
public int getMoneyOut(){
List
int sum = 0;
for (Integer integer : moenyOut) {
sum += integer.intValue();
}
return sum;
}
}
在recyclerview上方添加了一个cardview,用来显示总支出和总收入。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章