【Android】家庭记账本手机版开发报告一
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【Android】家庭记账本手机版开发报告一
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                一、說在前面
| 昨天 | 學(xué)習(xí)了數(shù)據(jù)庫的一些簡(jiǎn)單操作 | 
| 今天 | 使用數(shù)據(jù)庫,完成對(duì)記賬本的賬單記錄的增刪 | 
| 問題 | 沒有 | 
二、數(shù)據(jù)庫
1、賬單表的結(jié)構(gòu)
(注 id:賬單的唯一標(biāo)識(shí),uid:記錄賬單的用戶的id,cost_time:記錄賬單的時(shí)間,cost_type:賬單類型,cost_money:賬單金額。)
2、Entity:AccountRecord.java
package com.me.familybookkeepingbook;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class AccountRecord {
    @PrimaryKey(autoGenerate = true)
    private int id;
    @ColumnInfo(name = "uid")
    private int uid;
    @ColumnInfo(name = "cost_time")
    private String costTime;
    @ColumnInfo(name = "cost_type")
    private String costType;
    @ColumnInfo(name = "cost_money")
    private Double costMoney;
    public AccountRecord(int uid, String costTime, String costType, Double costMoney) {
        this.uid = uid;
        this.costTime = costTime;
        this.costType = costType;
        this.costMoney = costMoney;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getCostTime() {
        return costTime;
    }
    public void setCostTime(String costTime) {
        this.costTime = costTime;
    }
    public String getCostType() {
        return costType;
    }
    public void setCostType(String costType) {
        this.costType = costType;
    }
    public Double getCostMoney() {
        return costMoney;
    }
    public void setCostMoney(Double costMoney) {
        this.costMoney = costMoney;
    }
}
3、對(duì)數(shù)據(jù)庫的操作:AccountRecordDao.java
package com.me.familybookkeepingbook;
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 AccountRecordDao {
    @Insert
    void insertAccountRecord (AccountRecord ... AccountRecords);
    @Update
    void updateAccountRecord (AccountRecord ... AccountRecords);
    @Delete
    void deleteAccountRecord (AccountRecord ... AccountRecords);
    @Query("DELETE From ACCOUNTRECORD")
    void deleteAllAccountRecord ();
    @Query("SELECT * From ACCOUNTRECORD ORDER BY ID DESC")
    List<AccountRecord> getAllAccountRecord ();
}
AccountRecordDatabase.java
package com.me.familybookkeepingbook;
import androidx.room.Database;
import androidx.room.RoomDatabase;
@Database(entities = {AccountRecord.class },version = 1,exportSchema = false)
public abstract class AccountRecordDatabase extends RoomDatabase {
    public abstract AccountRecordDao getAccountRecordDao();
}
三、界面布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.8" />
    <ScrollView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="1dp"
        android:layout_marginLeft="1dp"
        android:layout_marginEnd="1dp"
        android:layout_marginRight="1dp"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/textview"
            android:textSize="24sp" />
    </ScrollView>
    <Button
        android:id="@+id/buttonInsert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/buttonInsert"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/buttonDelete"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline" />
    <Button
        android:id="@+id/buttonDelete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/buttonDalete"
        app:layout_constraintBottom_toBottomOf="@+id/buttonInsert"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/buttonInsert"
        app:layout_constraintTop_toTopOf="@+id/buttonInsert" />
</androidx.constraintlayout.widget.ConstraintLayout>
四、界面和數(shù)據(jù)的綁定
1、界面的更新
void updateView(){
        List<AccountRecord> list = accountRecordDao.getAllAccountRecord();
        String text = "";
        for (int i=0;i<list.size();i++){
            AccountRecord accountRecord = list.get(i);
            text += accountRecord.getId() + "   " + accountRecord.getCostType() + "   "+accountRecord.getCostTime() +"   "+
                    accountRecord.getCostMoney() +"
";
        }
        textView.setText(text);
    }
2、按鍵的監(jiān)聽
 buttonInsert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AccountRecord accountRecord = new AccountRecord(1,"2020-01-26","學(xué)習(xí)",100.0);
                accountRecordDao.insertAccountRecord(accountRecord);
                updateView();
            }
        });
        buttonDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                accountRecordDao.deleteAllAccountRecord();
                updateView();
            }
        });
五、運(yùn)行測(cè)試
1、插入:
2、刪除
總結(jié)
以上是生活随笔為你收集整理的【Android】家庭记账本手机版开发报告一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 如何写一个bootloader
- 下一篇: iOS极光推送,两次Bundleid不一
