安卓开发学习04

写在前面:

本来打算今天做完增删改查界面,但发现由于基础知识的欠缺(关于fragment的切换,如何在activity中启动fragment,如何在fragment中添加ListView),导致折腾了一下午连界面都没有搭建好。目前来看再咋着搞也不会有结果,所以打算放一放,先去复习JAVA WEB,android这个项目先推倒,决定还是从更加基础的做起,毕竟不能一口吃一个胖子。说实话我现在对于android中的各种运行机制都不甚熟悉,底子不稳的情况下什么都不可能做的好,只能是剽别人的代码罢了,现在连别人的代码里面的逻辑都看不懂。(连同学写的代码都看不懂,别说github上的一些高级点的代码了)

今日内容:

首先搭建了基本的数据结构,即数据库。这块没有难度:

entity层:

package com.test.dailyrecord.database;

import android.content.DialogInterface;

import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;

@Entity(tableName = "DailyRecord")
public class DailyRecordEntity {
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name="DId",typeAffinity = ColumnInfo.INTEGER)
    private int DId;
    @ColumnInfo(name="DName",typeAffinity = ColumnInfo.TEXT)
    private String DName;
    @ColumnInfo(name="DTem",typeAffinity = ColumnInfo.TEXT)
    private String DTem;
    @ColumnInfo(name="DCon",typeAffinity = ColumnInfo.TEXT)
    private String DCon;
    @ColumnInfo(name="DDate",typeAffinity = ColumnInfo.TEXT)
    private String DDate;

    //Room只能识别和使用一个构造器
    public DailyRecordEntity(int DId,String DName,String DTem,String DCon,String DDate){
        this.DId= DId;
        this.DName= DName;
        this.DTem= DTem;
        this.DCon= DCon;
        this.DDate= DDate;
    }


    public int getDId() {
        return DId;
    }

    public void setDId(int DId) {
        this.DId = DId;
    }

    public String getDName() {
        return DName;
    }

    public void setDName(String DName) {
        this.DName = DName;
    }

    public String getDTem() {
        return DTem;
    }

    public void setDTem(String DTem) {
        this.DTem = DTem;
    }

    public String getDCon() {
        return DCon;
    }

    public void setDCon(String DCon) {
        this.DCon = DCon;
    }

    public String getDDate() {
        return DDate;
    }

    public void setDDate(String DDate) {
        this.DDate = DDate;
    }
}

dao层:

package com.test.dailyrecord.database;

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 DailyRecordDao {
    @Insert
    void insertDailyData(DailyRecordEntity daily);
    @Delete
    void deleteDailyData(DailyRecordEntity daily);
    @Update
    void updateDailyData(DailyRecordEntity daily);
    @Query("select * from DailyRecord")
    List<DailyRecordEntity> getDailyList();
}

dababase:

package com.test.dailyrecord.database;

import android.content.Context;

import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;

@Database(entities = {DailyRecordEntity.class},version = 1,exportSchema = false)
public abstract  class MyDataBase extends RoomDatabase {
    private static final String DATABASE_NAME = "my_db";
    private static MyDataBase databaseInstance;
    public static synchronized MyDataBase getInstance(Context context){
        if(databaseInstance == null){
            databaseInstance = Room.databaseBuilder(context.getApplicationContext(),
                    MyDataBase.class,DATABASE_NAME).build();
        }
        return  databaseInstance;
    }
    //定义抽象方法返回dao
    public  abstract DailyRecordDao DailyDao();
}

反思:

本以为android基于java,学习起来上手会很快,但现在看来android开发的整体逻辑与网页端的开发并不相同,各种思路也不一样。需要先画界面,然后对于界面进行后台逻辑的实现。但一旦复杂一点,自己就完全理不清其中的逻辑关系,也不知道该怎么写了。今天写的过程中,首先是在fragment中添加listview 在经过百度后写了上去,但发现APP无法打开,之后写了适配器,但在写主程序逻辑的时候懵了,因为不知道如何启用fragment 我昨天使用的那个导航栏,并不是常规的fragment,他通过使用一个类似哈希表的方式实现了其切换,即动态在activitiy中生成。这可让我犯了难。在经过了数小时的搜索无果后,程序依然是处于崩溃的状态。我知道我这次的开发是完全失败的。本来想使用好看的导航栏,但到最后发现以自己的能力根本没办法真正掌握这种导航栏。想法与能力的不匹配在此刻完整的显现出来。因此,决定这段时间暂且去复习,java web方面也只是学了个基本的东西,并没有深入。在下学期中,从底子开始学习安卓的开发。经过一个寒假的学习,我意识到编程,其实就是要个思路明确。知道程序是怎么运行的了,知道是怎么回事了,代码也是信手拈来。像我这样迷迷糊糊,只靠别人的代码,根本没有办法写好软件。在此深刻反思。

安卓开发学习04

上一篇:Android开发之记账本开发第六天


下一篇:教你5分钟做个手机APP[视频]