写在前面:
本来打算今天做完增删改查界面,但发现由于基础知识的欠缺(关于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方面也只是学了个基本的东西,并没有深入。在下学期中,从底子开始学习安卓的开发。经过一个寒假的学习,我意识到编程,其实就是要个思路明确。知道程序是怎么运行的了,知道是怎么回事了,代码也是信手拈来。像我这样迷迷糊糊,只靠别人的代码,根本没有办法写好软件。在此深刻反思。