• 记账本APP小升级


    
    

    增加了显示当月总收入和总支出的功能,增加了选择收支类型的功能,删去了删除账目后恢复的功能。

     

    1、数据库的升级

    1、entity

    添加了一个收支类型的字段:

    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;
        }
    }
    ​

    2、dao

    增加了查询所有支出和收入的金额:

    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<List<Notes>> getNotesList();
    ​
        @Query("select * from notes where other_info like :pattern order by id desc")
        LiveData<List<Notes>> getNotesByPattern(String pattern);
    ​
        @Query("select money from notes where money_type = :pattern")
        List<Integer> getMoneyListByPattern(String pattern);
    ​
        @Delete
        void deleteNote(Notes... notes);
    }
    ​

    3、database

    为方便使用,使得数据库的操作可以在主线程中执行:

    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");
            }
        };
    }

    4、viewmodel

    增加了获取总支出和总收入金额的方法:

    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<List<Notes>> getAllList(){
            return repository.getNotesList();
        }
    ​
        public LiveData<List<Notes>> 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<Integer> moenyOut = repository.getMoenyOut();
            int sum = 0;
            for (Integer integer : moenyOut) {
                sum += integer.intValue();
            }
            return  sum;
        }
    }

    2、布局的修改

    在recyclerview上方添加了一个cardview,用来显示总支出和总收入。

     

  • 相关阅读:
    [原] Code Color Scheme
    [转] 13款开源Java大数据工具,从理论到实践的剖析
    如何在Web页面上直接打开、编辑、创建Office文档 (转)
    自己用VS2008写的数据库操作包装类
    可以用ORACLE的临时表
    ASP.net中动态加载控件时一些问题的总结(转)
    Infragistics.WebUI.WebCombo的用法
    oracle中创建表的一种方法
    oracle中插入一个blob数据
    中国人正在上的四个当
  • 原文地址:https://www.cnblogs.com/wuren-best/p/12309145.html
Copyright © 2020-2023  润新知