初识LiteOrm(2)

这里想说一下遇到的问题,和解决的方法。
首先,之前封装的那个DatabaseManager中的两个queryAll不好用,参数写的有问题(:P),我就加了个新方法。

public <T> int update(Class<T> tClass, String where, String[] args, String[] args2, 
        String[]args3){
   return liteOrm.update(new WhereBuilder(tClass, where, args),new ColumnsValue(args2, args3)
                , ConflictAlgorithm.None);
}

这个方法就是调用LiteOrm的update,然后其中的参数也是按照LiteOrm的参数添上去的。
额。感觉就是强行用了一下LiteOrm原本的update。
我的需求是,想记录我收藏过的视频,下面是实体类bean的代码:

@Table("Course")
public class CourseBean {
    @PrimaryKey(AssignType.AUTO_INCREMENT)
    private int id;
    private int movieId;
    private boolean isCollected;

    public CourseBean(int movieId, boolean isCollected) {
        this.movieId = movieId;
        this.isCollected = isCollected;
    }
    public int getMovieId() {
        return movieId;
    }
    public void setMovieId(int movieId) {
        this.movieId = movieId;
    }
    public boolean isCollected() {
        return isCollected;
    }
    public void setCollected(boolean collected) {
        isCollected = collected;
    }
}

实体类中含有三个属性,一个是id,自增长的主键。还有视频id和是否已收藏的boolean值。
之前忘了加主键的那个@,结果就出错了。一开始是以movieId作为主键的,在插入的时候发生了primarykey must be unique 的异常。改成现在这样就好了。

在界面初始化时候,先初始化收藏状态,使用成员变量isCollected记录:

//使用封装的线程池
        MyThreadPool.getInstance().getThreadPoolExecutor().execute(new Runnable() {
            @Override
            public void run() {
                //查询表中所有数据
                List<CourseBean> courseBeanArrayList = DatabaseManager.getInstance()
                        .getQueryAll(CourseBean.class);
                CourseBean nowBean = null;
                //遍历数据,找到此次的movieId就保存到nowBean中
                for (CourseBean courseBean : courseBeanArrayList) {

                    if (courseBean.getMovieId() == movieId) {
                        nowBean = courseBean;
                        Log.e(TAG, "run: i find it");
                    }
                }

                Log.e(TAG, "run: " + courseBeanArrayList.size());
                //如果为null或者被收藏属性为false,设置相应的变化
                if (nowBean == null || !nowBean.isCollected()) {
                    isCollected = false;
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            collectImg.setImageResource(R.mipmap.toolbar_collection_btn_normal);
                        }
                    });
                } else {
                    isCollected = true;
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            collectImg.setImageResource(R.mipmap.toolbar_collection_btn_pressed);
                        }
                    });
                }


            }
        });

收藏按钮被点击时候的点击事件为:

case R.id.course_collect:
   //判断是否被收藏
   if (isCollected) {
      //判断是是否为第一次创建数据库,是的话,需要先进行insert操作,数据库才会被创建
      if (isFirst) {
          isFirst = false;
          CourseBean courseBean = new CourseBean(movieId, false);
          DatabaseManager.getInstance().insert(courseBean);
          Log.e(TAG, "onClick: addnew false first" + movieId);
      }else{
          //先进行更新操作,如果获得的更新行数为0,则代表该movieId数据尚未被录入,需要insert
          int rows = DatabaseManager.getInstance().update(CourseBean.class, "movieId=?",
               new String[]{"" + movieId}, new String[]{"isCollected"}, new String[]{"false"});
          Log.e(TAG, "onClick: update false");
          if(rows == 0){
              CourseBean courseBean = new CourseBean(movieId, false);
              DatabaseManager.getInstance().insert(courseBean);
              Log.e(TAG, "onClick: addnew false 0" + movieId);
                        }
                    }
                    collectImg.setImageResource(R.mipmap.toolbar_collection_btn_normal);
                    isCollected = false;
                } else {
                    if (isFirst) {
                        isFirst = false;
                        CourseBean courseBean = new CourseBean(movieId, true);
                        DatabaseManager.getInstance().insert(courseBean);
                        Log.e(TAG, "onClick: addnew true first" + movieId);
                    }else{
                        int rows = DatabaseManager.getInstance().update(CourseBean.class,
                           "movieId=?",new String[]{"" + movieId}, new String[]{"isCollected"},
                            new String[]{"true"});
                        Log.e(TAG, "onClick: update true");
                        if(rows == 0){
                            CourseBean courseBean = new CourseBean(movieId, true);
                            DatabaseManager.getInstance().insert(courseBean);
                            Log.e(TAG, "onClick: addnew true 0" + movieId);
                        }
                    }
                    collectImg.setImageResource(R.mipmap.toolbar_collection_btn_pressed);
                    isCollected = true;
                }
    break;

就是记得如果第一次使用数据库先调用insert再调用其它方法。
/…………后记: 坑了整整一晚上,还是会的太少了,Come on !…………../

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值