zoukankan      html  css  js  c++  java
  • 安卓开发学习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方面也只是学了个基本的东西,并没有深入。在下学期中,从底子开始学习安卓的开发。经过一个寒假的学习,我意识到编程,其实就是要个思路明确。知道程序是怎么运行的了,知道是怎么回事了,代码也是信手拈来。像我这样迷迷糊糊,只靠别人的代码,根本没有办法写好软件。在此深刻反思。

  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/wushenjiang/p/12304627.html
Copyright © 2011-2022 走看看