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

  • 相关阅读:
    服务器重启
    aliyun修复漏洞之后,重启php-fpm命令
    数据结构和算法绪论(一)
    微信小程序+微信公众号开发总结
    数字校园项目-学生失联预警系统(三)----数据库设计
    数字校园项目-学生失联预警系统(二)-----项目部署
    数字校园项目-学生失联预警系统(一)
    gdut极路由破解教程
    项目:JavaWeb聊天室(问题汇总)
    项目:点餐系统(问题汇总)
  • 原文地址:https://www.cnblogs.com/wushenjiang/p/12304627.html
Copyright © 2011-2022 走看看