【转载请注明出处:From李诗雨---http://blog.csdn.net/cjm2484836553/article/details/78279457】
不诗意的女程序猿不是好厨师~
点击下载Demo源代码:源码。
(不知道为什么现在csdn上传资源后,没有不需要积分就下载的选项了,没有积分的宝宝留下邮箱,我单独发给你哈~)
注:需要sd卡读写权限,联网权限
LitePal的github网址:https://github.com/LitePalFramework/LitePal
具体步骤如下:
①添加依赖dependencies { compile 'org.litepal.android:core:1.6.0' }
②在assets目录下,建立litepal.xml文件
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="mydb_demo" />
<version value="1" />
<list>
</list>
<storage value="external" />
</litepal>
说明:
dbname---数据库名
version---数据库版本号,每次你想申请升级数据库时,值就加1
list---用于配置对应的映射类
storage---配置数据库的存储位置,可选“internal”或“external”。
③配置LitePalApplication
一种情况: 直接在AndroidMainfest.xml文件中:
<manifest>
<application
android:name="org.litepal.LitePalApplication"
...
>
...
</application>
</manifest>
或者说: 你已经有了自己的Application那只要再使其继承LitePalApplication即可
/**
* Created by lsy on 2017/10/17.
* 自己的Application
*/
public class MyApplication extends LitePalApplication {
@Override
public void onCreate() {
LitePal.initialize(this);
}
// ...
}
}
④正式开始使用:
说明:本次demo使用的数据来自“聚合数据”的----今日头条数据
我的appkey:ec9b00bad2c53b5d0c9df4e8bf185a4f
对应的接口:
http://v.juhe.cn/toutiao/index?type=top&key=appkey
假设生成了对应的Bean类:TopBean
④.1 创建表
首先定义模型。
(其实一般只要对应的Bean类继承DataSupport即可。如果存在特殊情况那就特殊处理一下。)
public class TopItemBean extends DataSupport{
private String uniquekey;
private String title;
private String date;
private String category;
private String author_name;
//...
}
将该模型添加到litepal.xml对应的映射列表中
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="mydb_demo" />
<version value="1" />
<list>
<mapping class="com.lsy.sql.db_about_demo.model.TopItemBean" />
</list>
<storage value="external" />
</litepal>
④.2 生成对应的表
//生成表
SQLiteDatabase db = LitePal.getDatabase();
④.3 可进行相关操作
联网获取数据成功,保存集合数据到数据库
//联网成功的数据保存到数据库中
DataSupport.deleteAll(TopItemBean.class);
DataSupport.saveAll(topListContainer);
联网获取数据失败,则从数据库取数据并展示
将手机的网络关闭,再次打开应用,你会发现会有数据涛声依旧的显示,则表明缓存数据成功
//联网失败或者链接超时,则使用数据库中的数据
List<NotFinishItemBean> dbChannelList = DataSupport.findAll(NotFinishItemBean.class);
if(dbChannelList!=null) {
channelListCotainer.clear();
channelListCotainer.addAll(dbChannelList);
channelRvAdapter.updateChannelData(channelListCotainer);
}
积累点滴,做好自己!