andorid view如何附带数据_如何使用Room和Recyclerview以及ViewModel在Android中使用数据库...

论坛 期权论坛     
选择匿名的用户   2021-5-22 14:49   126   0
<div style="font-size:16px;">
<p>本文解决了典型的任务: 在应用程序中存储数据 - 使用Room 向用户显示数据 - 使用片段和recyclerview 存储并使用自动更新数据 ViewModel 背景 Room提供了一个覆盖SQLite的抽象层,以便在利用SQLite的全部功能的同时进行流畅的数据库访问。 该应用程序使用 Ro</p>
<p>本文解决了典型的任务:</p>
<p>在应用程序中存储数据 - 使用Room</p>
<p>向用户显示数据 - 使用片段和recyclerview</p>
<p>存储并使用自动更新数据ViewModel</p>
<p>背景</p>
<p>Room提供了一个覆盖SQLite的抽象层,以便在利用SQLite的全部功能的同时进行流畅的数据库访问。该应用程序使用Room数据库来获取与该数据库关联的数据访问对象或DAO。然后,应用程序使用每个DAO从数据库中获取实体,并将对这些实体的任何更改保存回数据库。最后,应用程序使用实体来获取和设置与数据库中的表列对应的值。</p>
<p>在RecyclerView窗口小部件中,几个不同的组件一起工作以显示您的数据(对象列表)。用户界面的整个容器是RecyclerView您添加到布局的对象。该RecyclerView由您提供的布局管理器提供的意见罢了本身。您可以使用我们的标准布局管理器(例如LinearLayoutManager或GridLayoutManager),或实现您自己的。</p>
<p>ViewModel是一个负责准备和管理活动或片段数据的类。它还处理Activity / Fragment与应用程序其余部分的通信。换句话说,这意味着ViewModel如果其所有者因配置更改(例如旋转)而被销毁,则不会销毁该文件。所有者的新实例将重新连接到现有实例ViewModel。</p>
<p>使用代码</p>
<p>开始吧!在Android studio中创建一个新项目(我使用的是版本3.2.1),或者您可以下载源文件并选择:File-New-Import项目。我们将构建一个这样的应用程序:</p>
<p align="center"><img alt="" src=""></p>
<p>您可以根据需要在数据库中添加和删除数据并将其显示在屏幕上。</p>
<p>我们需要数据类DataItem:</p>
<p>隐藏   复制代码</p>
<p>public class DataItem {<!-- --></p>
<p>private long id;</p>
<p>private String name;</p>
<p>private String content;</p>
<p>private String details;</p>
<p>private String section;</p>
<p>}</p>
<p>它是类 - 我们存储在数据库中的数据。为了显示这些数据,我们使用RecyclerView小部件。创建新片段:File-New-Fragment-Fragment(列表)。RecyclerView使用两个XML文件:一个文件表示列表项,第二个文件表示项的完整列表。进行一些更改fragment_item:添加CardView小部件并制作自定义Textview元素。也增加了build.gradle对Cardview小部件:</p>
<p>隐藏   复制代码</p>
<p>//for recyclerview items</p>
<p>implementation &#39;com.android.support:cardview-v7:28.0.0&#39;</p>
<p>Fragment_item.xml:</p>
<p>隐藏   收缩</p>
<p align="center"><img alt="" src="">   复制代码</p>
<p align="center"><img alt="" src=""></p>
<p>要Textview使用数字进行红色循环,我们需要round_shape.xml:</p>
<p>隐藏   复制代码</p>
<p>并将background我们的值设置TextView为round_shape.xml:</p>
<p>隐藏   复制代码</p>
<p>android:background&#61;&#34;&#64;drawable/round_shape&#34;</p>
<p>添加按钮到fragment_list.xml:</p>
<p>隐藏   收缩</p>
<p align="center"><img alt="" src="">   复制代码</p>
<p align="center"><img alt="" src=""></p>
<p>让我们转到数据库。这个应用程序侧重于成分即的一个子集LiveData,ViewModel和Room。此图显示了此体系结构的基本形式。你可以在这里阅读更多相关信息。</p>
<p align="center"><img alt="" src=""></p>
<p>添加一些build.gradleapp模块:</p>
<p>隐藏   复制代码</p>
<p>//Room components</p>
<p>implementation &#34;android.arch.persistence.room:runtime:1.1.1&#34;</p>
<p>annotationProcessor &#34;android.arch.persistence.room:compiler:1.1.1&#34;</p>
<p>androidTestImplementation &#34;android.arch.persistence.room:testing:1.1.1&#34;</p>
<p>//Lifecycle components</p>
<p>implementation &#34;android.arch.lifecycle:extensions:1.1.1&#34;</p>
<p>annotationProcessor &#34;android.arch.lifecycle:compiler:1.1.1&#34;</p>
<p>要使DataItem该类对Room数据库有意义,您需要对其进行注释。注释标识此类的每个部分如何与数据库中的条目相关。Room使用此信息生成代码。</p>
<p>&#64;Entity(tableName &#61;&#34;data_item_table&#34;)</p>
<p>每个&#64;Entity类代表一个表中的实体。注释您的类声明以指示它是一个实体。如果希望它与类的名称不同,请指定表的名称。</p>
<p>&#64;PrimaryKey</p>
<p>每个实体都需要一个主键。为了简单起见,每个单词都作为自己的主键。</p>
<p>&#64;NonNull</p>
<p>表示参数,字段或方法返回值永远不会null。</p>
<p>&#64;ColumnInfo(name &#61;&#34;name&#34;)</p>
<p>如果希望它与成员变量的名称不同,请在表中指定列的名称
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP