自做闪图网站网站建设需要什么材料

news/2025/9/23 22:21:27/文章来源:
自做闪图网站,网站建设需要什么材料,蓝色企业网站,shopnc商城系统本是青灯不归客#xff0c;却因浊酒恋红尘 一#xff0c;基本使用 关于Room数据库的基本使用#xff0c;请参考文章Android--Jetpack--数据库Room详解一-CSDN博客 二#xff0c;Room与ViewModle,LiveData的结合使用 LiveData与ViewModle的使用#xff0c;请参考文章Andr…本是青灯不归客却因浊酒恋红尘 一基本使用 关于Room数据库的基本使用请参考文章Android--Jetpack--数据库Room详解一-CSDN博客 二Room与ViewModle,LiveData的结合使用 LiveData与ViewModle的使用请参考文章Android--Jetpack--LiveData-CSDN博客 我们通过结合Room与LiveData和ViewModle的使用可以使当我们的数据库发生变化的时候自动的去更新UI。 下面来看一个简单的使用案例 1还是 Android--Jetpack--数据库Room详解一-CSDN博客 中创建的数据库表还是YuanZhen这张表 我们把YuanZhenDao这个Dao类添加一个新的方法使得可以查询到LiveData包装的集合 Dao public interface YuanZhenDao {Insertvoid insert(YuanZhen... yuanzhens);Deletevoid delete(YuanZhen yuanZhen);Updatevoid update(YuanZhen yuanZhen);Query(select * from YuanZhen)ListYuanZhen getAll();Query(select * from YuanZhen where name like :name)YuanZhen getByName(String name);Query(select * from YuanZhen where age in(:ages))ListYuanZhen getByAges(int[] ages);Query(select name,address from YuanZhen )public ListYuanZhenNew getNew();Query(select * from YuanZhen)LiveDataListYuanZhen getAllLiveDataYZ(); } 2将数据库MyDatabase修改为单例模式 Database(entities {YuanZhen.class},version 1) public abstract class MyDatabase extends RoomDatabase {private static MyDatabase instance;public static synchronized MyDatabase getInstance(Context context){if(instancenull){instance Room.databaseBuilder(context.getApplicationContext(),MyDatabase.class,YuanZhenDb).build();}return instance;}public abstract YuanZhenDao yuanZhenDao();} 3创建一个包装类包装LiveData给ViewModel使用 public class YuanZhenDecorate {private LiveDataListYuanZhen liveDataAllYZ;private YuanZhenDao yuanZhenDao;public YuanZhenDecorate(Context context) {yuanZhenDao MyDatabase.getInstance(context).yuanZhenDao();if(liveDataAllYZnull){liveDataAllYZyuanZhenDao.getAllLiveDataYZ();}}void insert(YuanZhen... yuanZhens){yuanZhenDao.insert(yuanZhens);}void delete(YuanZhen yuanZhen){yuanZhenDao.delete(yuanZhen);}void update(YuanZhen yuanZhen){yuanZhenDao.update(yuanZhen);}ListYuanZhen getAll(){return yuanZhenDao.getAll();}LiveDataListYuanZhen getAllLiveDataYZ(){return yuanZhenDao.getAllLiveDataYZ();}} 4创建一个viewmodle public class YZViewModdel extends AndroidViewModel {private YuanZhenDecorate yuanZhenDecorate;public YZViewModdel(NonNull Application application) {super(application);yuanZhenDecorate new YuanZhenDecorate(application);}void insert(YuanZhen... yuanZhens){yuanZhenDecorate.insert(yuanZhens);}void delete(YuanZhen yuanZhen){yuanZhenDecorate.delete(yuanZhen);}void update(YuanZhen yuanZhen){yuanZhenDecorate.update(yuanZhen);}ListYuanZhen getAll(){return yuanZhenDecorate.getAll();}LiveDataListYuanZhen getAllLiveDataYZ(){return yuanZhenDecorate.getAllLiveDataYZ();}} 5创建一个recyclerview的adapter public class MyAdapter extends RecyclerView.Adapter {private LayoutInflater mLayoutInflater;private ListYuanZhen mList;public MyAdapter(Context context,ListYuanZhen mList) {mLayoutInflater LayoutInflater.from(context);this.mList mList;}public void setData(ListYuanZhen mList) {this.mList mList;}NonNullOverridepublic RecyclerView.ViewHolder onCreateViewHolder(NonNull ViewGroup parent, int viewType) {return new ViewHolder(mLayoutInflater.inflate(R.layout.item, parent, false));}Overridepublic void onBindViewHolder(NonNull RecyclerView.ViewHolder holder, int position) {((ViewHolder)holder).mTxt.setText(mList.get(position).getName());}Overridepublic int getItemCount() {if(mList!null){return mList.size();}return 0;}class ViewHolder extends RecyclerView.ViewHolder {TextView mTxt;public ViewHolder(NonNull View itemView) {super(itemView);mTxt (TextView) itemView.findViewById(R.id.txt);}}} 6activity的xml布局 ?xml version1.0 encodingutf-8? androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityandroidx.recyclerview.widget.RecyclerViewandroid:idid/rv_roomandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparent //androidx.constraintlayout.widget.ConstraintLayout 7item的xml布局 ?xml version1.0 encodingutf-8? RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentTextViewandroid:idid/txtandroid:layout_widthmatch_parentandroid:layout_height30dpandroid:textSize16sp//RelativeLayout 8使用 public class MainActivity extends AppCompatActivity {StudentViewModel studentViewModel;ListView listView;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView findViewById(R.id.listView);studentViewModel ViewModelProviders.of(this).get(StudentViewModel.class);studentViewModel.getAllLiveDataStudent().observe(this, new ObserverListStudent() {Overridepublic void onChanged(ListStudent students) {listView.setAdapter(new GoodsAdapter(MainActivity.this, students));}});for (int i 0; i 50; i) {studentViewModel.insert(new Student(jett, 123, 1));}new Thread() {Overridepublic void run() {for (int i 0; i 50; i) {try {Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();}studentViewModel.update(new Student(6, jett i, 123, 1));}}}.start();} } 9运行 三数据库的升级 1强制升级执行之后数据库的结构会发生变化但是数据库的数据会丢失。 这种情况比较适合toB开发数据库版本高降到低的情况紧急发一版新的程序给现场升级。 使用 fallbackToDestructiveMigration() Database(entities {YuanZhen.class},version 2) public abstract class MyDatabase extends RoomDatabase {private static MyDatabase instance;public static synchronized MyDatabase getInstance(Context context){if(instancenull){instance Room.databaseBuilder(context.getApplicationContext(),MyDatabase.class,YuanZhenDb)//强制升级.fallbackToDestructiveMigration().build();}return instance;}public abstract YuanZhenDao yuanZhenDao();} 2一般的升级方式 假如我们要增加一个字段price Entity public class YuanZhen {PrimaryKey(autoGenerate true)private int id;ColumnInfo(name name)private String name;ColumnInfo(name age)private int age;ColumnInfo(name address)private String address;ColumnInfo(name price)private int price;Ignoreprivate String sex;public YuanZhen(String name, int age, String address) {this.name name;this.age age;this.address address;}public void setId(int id) {this.id id;}public void setName(String name) {this.name name;}public void setAge(int age) {this.age age;}public void setAddress(String address) {this.address address;}public int getId() {return id;}public String getName() {return name;}public int getAge() {return age;}public String getAddress() {return address;}Overridepublic String toString() {return YuanZhen{ id id , name name \ , age age , address address \ , sex sex \ };} } 在MyDatabase中增加升级功能 Database(entities {YuanZhen.class},version 2,exportSchema false) public abstract class MyDatabase extends RoomDatabase {private static MyDatabase instance;public static synchronized MyDatabase getInstance(Context context){if(instancenull){instance Room.databaseBuilder(context.getApplicationContext(),MyDatabase.class,YuanZhenDb)//强制升级// .fallbackToDestructiveMigration().addMigrations(MIGRATION_1_2).build();}return instance;}public abstract YuanZhenDao yuanZhenDao();static final Migration MIGRATION_1_2new Migration(1,2) {Overridepublic void migrate(NonNull SupportSQLiteDatabase database) {//在这里用sql脚本完成数据变化database.execSQL(alter table yuanzhen add column price integer not null default 1);}};} 这里和greendao最大的不同就是这里需要自己去写升级脚本虽然增加了工作量但是也更加灵活了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设的心得与体会茂名市建设局网站

📖第4章 Android高德地图绘制标记点Marker ✅绘制默认 Marker✅绘制多个Marker✅绘制自定义 Marker✅Marker点击事件✅Marker动画效果✅Marker拖拽事件✅绘制默认 Infowindow🚩隐藏InfoWindow 弹框 ✅绘制自定义 InfoWindow🚩实现 InfoWindow…

婚恋咨询网站运营wordpress 外跳

2019独角兽企业重金招聘Python工程师标准>>> 用java实现对纯真IP数据库的查询,首先到网上下载QQwry.da文件,读取代码如下:1.IP记录实体类 package com.guess.tools; /** * 一条IP范围记录,不仅包括国家和区域&#xff…

设计网站建设长沙必去十大网红地方

1 ChatGPT每日一题:PCB布线,高速信号线走直角的后果 问题:PCB布线,高速信号线走直角的后果 ChatGPT:对于高速信号线来说,最好避免使用直角布线。直角布线会引入反射和信号损耗,从而导致信号完…

vite静态资源处理

/*** 获取完整解析静态资源的url,如图片、svg等* @param {string} path 静态资源在在assets中的地址,例如:images/pubilc/logo.png* @returns {string}*/ export function getStaticUrl(path: string | undefined):…

洛谷B4040 [GESP202409 四级] 黑白方块 题解

原题传送门 前言 天啊!上一周刚刚考完 \(CSP-J\) ,这一周就得去考 \(GESP\) 4级 (是的,你没有听错,我3级过了!) 所以,做了一道简单的题之后,我又来写题解了! (仍然是WA++) 题目解析 哇,这题可真长啊!什…

SerpApi:一站式搜索引擎数据抓取API完全指南

本文详细介绍SerpApi这一实时搜索引擎数据抓取API的技术特性,包括GET请求示例、多语言库集成、JSON结构化数据输出、极速模式配置以及地理位置搜索等核心功能,帮助开发者快速集成搜索引擎数据到应用程序中。SerpApi:…

网站建设过程中什么最重要百度竞价怎么开户

1、 session持久化是什么? web服务器把 session中存储的属性存储到本地磁盘或数据库中; 2、为什么需要持久化? 因为 session是服务器维护会话状态的对象,即便客户端关闭连接或客户端长时间没有访问,服务器还依然存储…

网站备案中更名菜单设计制作模板免费

1. 获取时间 时间是个重要的编程元素,可用于计算间隔、同步服务器以及控制超时。 计算机中的时间分为以下两种形式: 墙钟时间:以12或24小时为周期不断重复,不同的地区和季节会因时区或夏令时而异。单调时间:从一个时…

中山公司网站建设小型企业网站建设报告

一. Windows下为PowerShell/CMD/Git设置代理 —————————————————————————————————————————————————————— 二. [WinError 10061] 由于目标计算机积极拒绝,无法连接。 keyerror:192。 HTTP Error 403: Forbidd…

海丰网站建设wordpress如何置顶

我一开始的想法是:后序遍历是左右根,那么第一个数小于第二个数,第二个数大于第三个数,然后从第三个数开始又循环,显然错了,因为我这种是理想情况,是一个满二叉树。正确的解法是: class Solutio…

工信部网站备案系统登录机械网站建设公司

目录 一、了解什么是泛性编程 二、模版 1.函数模版 1.1 函数模板概念 1.2 函数模板格式 1.3 函数模板的原理 1.4 函数模板的实例化 1.5 模板参数的匹配原则 2.类模板 2.1 类模板的定义格式 2.2 类模板的实例化 3. 非类型模板参数 4. 模板的特化 4.1 概念 4.2 …

网站建设的价重庆网站建设团队

Yocto .bb 文件字段解析 本文详细讲解了 Yocto .bb 文件中各字段的作用和用法,包括 SECTION、SRC_URI、SUMMARY 等,旨在帮助开发者更好地理解和使用 Yocto 构建系统。 目录 1. SECTION 字段 1.1 SECTION 的作用1.2 SECTION 的用法1.3 如何使用 SECTIO…

人工智能ai写作网站免费asp net网站开发语言的特点

这里小程序开发中容易犯的错误-1写自定义目录标题 给客户做一个程序。需要在页面加载的时候在onLoad(options){}中加载定义好的函数,代码如下 onLoad(options) {get_week_()},运行时老报错 后来修改为正确的代码 onLoad(options) {this.get_week_()//必须加this},再…

wordpress建站教程简书建筑网站资料

分享88个表单按钮JS特效,总有一款适合您 88个表单按钮JS特效下载链接:https://pan.baidu.com/s/1v-qcl8bv2kxZ8a98Xo9UAg?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,…

环保类网站建设电力建设专家答疑在哪个网站

对于本题 我感觉还是链表做起来舒服 数组也可以做 但是数组需要去控制循环 不太好控制 我之前搞了 最后看别人的实现 但是链表搞了一次就搞好了 香的嘞~ 下面是代码 用单链表实现循环 再去删除要删除的人 5个人 数到2 你们在纸上画图 我就不画了 对于数组实现你们可以去…

补whk时的鲜花(持续更新)

我的 ACGN 观 前排提示:本篇文章灵感来源转弯这里有点长所以单发的闲话 其实说起来我的 acg 入圈时间不是很长,远远达不到某位机房巨犇幼儿园开始游玩 galgame 的壮举( 首先是 A (Animation) 这绝对是我涉足领域最深…

网站建设投标书免费自己做网站选什么好

第一章 数据分析概况 1.1数据分析定义 数据分析是指根据分析目的,用适当的分析方法及工具,对数据进行处理分析,提取有价值的信息,形成有效结论的过程。 1.2数据分析作用 数据分析在我们日常工作中主要有三大作用,…

【Rust管理MySql】Actix Web 框架结合 MySQL 数据库进行交互

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

审美积累 | 这样的科技网站怎么做?

审美积累 | 这样的科技网站怎么做?1. 版式设计层次清晰: 顶部大标题 “ECOMMERCE MANAGEMENT SYSTEM” 占据视觉中心,字体粗壮大写,突出核心信息。 信息区块化: 界面内容通过卡片、图表、地图和数据进行模块化展示…