记账本APP小升级

书到用时方恨少,事非经过不知难。这篇文章主要讲述记账本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 = https://www.songbingjia.com/android/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"); } }; }

【记账本APP小升级】 

?

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(); } returnsum; } ? //获得总支出 public int getMoneyOut(){ List< Integer> moenyOut = repository.getMoenyOut(); int sum = 0; for (Integer integer : moenyOut) { sum += integer.intValue(); } returnsum; } }

 

?

2、布局的修改
记账本APP小升级

文章图片

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

    推荐阅读