历史记录

相信昨天看完上一篇的收藏,大家对历史记录也不陌生吧

既然是历史记录,那么就要做本地处理,那同样的我们也是用greendao来做

1.

先依赖这个implementation 'org.greenrobot:greendao:3.2.2'
apply plugin: 'org.greenrobot.greendao' // apply plugin
greendao {
    schemaVersion 1
    daoPackage 'com.test_collect'
    targetGenDir 'src/main/java'
}

 

然后再gradle中配置

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin

配置完之后make project!!!

2.进来的时候是不是要先初始化

在application中做

public static DaoSession getDaoSession() {
        if(daoSession ==null) {
            helper = new MySQLiteOpenHelper(mContext, "test.db", null);
            SQLiteDatabase db = helper.getWritableDatabase();
            // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
            DaoMaster daoMaster = new DaoMaster(db);
            daoSession = daoMaster.newSession();
        }
        return daoSession;
    }
    /**
     * 关闭所有的操作,数据库开启后,使用完毕要关闭
     */
    public void closeConnection(){
        closeHelper();
        closeDaoSession();
    }

    public void closeHelper(){
        if(helper != null){
            helper.close();
            helper = null;
        }
    }
    public void closeDaoSession(){
        if(daoSession != null){
            daoSession.clear();
            daoSession = null;
        }
    }
    public static HistoryDao getHistoryBookDao(){
        return getDaoSession().getHistoryDao();
    }

对了,openhelper的继承需要这个条件

implementation 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v2.0.3'
public class MySQLiteOpenHelper extends DaoMaster.OpenHelper {
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
        super(context, name, factory);
    }
    
      MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {
            @Override
            public void onCreateAllTables(Database db, boolean ifNotExists) {
              DaoMaster.createAllTables(db, ifNotExists);
            }
            @Override
           public void onDropAllTables(Database db, boolean ifExists) {
               DaoMaster.dropAllTables(db, ifExists);
            }
        },  HistoryDao.class);
    }
}

ok基础的已经配置完毕啦,接着就是关键的啦

既然是历史记录,那肯定是得做本地,那么就得从你点击列表这一刻开始,

adapter1.setOnItemClickListener(new Recycler_variety_Adapter.OnItemClickListener() {
            private History history;
            @Override
            public void onItemClick(int position, Data item ) {
                if(item == null ||"".equals(item)){
                    return;
                }
                String content = item.getAddbody();
                String itemId = item.getId();
//                String itemId = "72711";
                StringBuffer urlSb = new StringBuffer("http://baidu.com");
                urlSb.append(itemId).append(".html");
                String url = urlSb.toString();
                List<String> images = item.getImages();
                String img_url = images.get(0);
                String title = item.getTitle();
                history = HistoryManager.getBook(title);
                if(history ==null){
                 history = new History();
                 history.setImg_url(img_url);
                 history.setHtml(url);
                 history.setContent(content);
                 history.setTitle(title);
                 history.setPubtime(item.getPubdate());
                 history.setRead(item.getClick());
                 history.setId1(item.getId());
//                 history.setIsCheck(true);
                }
                //删除已经存在重复的历史记录
                List<History> list2 = HistoryManager.dao.queryBuilder()
                        .where(HistoryDao.Properties.Title.eq(title)).build().list();
                HistoryManager.dao.deleteInTx(list2);
                //添加
                if (!title.equals(""))
                    HistoryManager.dao.insert(history);
         DetailContentActivity.start(getContext());
            }
        });

没错,就是把属于历史记录的所有信息都保存起来,然后删去重复的历史记录,我们还是以title作为主要的依据

历史记录的管理工具在如下

public class HistoryManager {
    public static HistoryDao dao = MyApplication.getHistoryBookDao();
    /**
     * 得到历史记录数量
     * @return
     */
    public static int getCount(){
        return (int) dao.queryBuilder().buildCount().count();
    }

    /**
     * 得到所有历史记录
     * @return
     */
    public static List<History> getAllHistory(){
        return dao.queryBuilder().list();
    }
    /**
     * 根据title得到历史记录
     * @param bookId
     * @return
     */
    public static History getHistory(String title){
        if(bookId != null) {
            return dao.queryBuilder().where(HistoryDao.Properties.Title.eq(title))
                    .unique();
        }
        return null;
    }
    /**
     * 插入历史
     * @param book
     */
    public static void insertHistory(History book){
//        dao.insert(book);
        dao.insertOrReplace(book);
    }

    public static void deleteHistory(){
        dao.deleteAll();
    }
}

History的类依据大家的需求哈,

然后再历史记录的列表需要这样获取

private List<History> allBook;
/**
 * 获取数据来源
 */
public void getList(){
    allBook = HistoryManager.dao.queryBuilder().list();
    if(allBook ==null ||"".equals(allBook)){
        return;
    }
}

以上就是今天的历史记录啦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值