使用LitePal存储list集合数据

【转载请注明出处: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);
    }
积累点滴,做好自己!

猜你喜欢

转载自blog.csdn.net/cjm2484836553/article/details/78279457