请选择 进入手机版 | 继续访问电脑版
JAVEN

DataSetObserver观察者在购物车模块的使用

所在版块: Android技术 2016-05-17 14:23   [复制链接] 查看: 7986|回复: 6
在写购物车模块时,需要根据购物车商品商品的数量来重新显示总价。在这里可以使用到观察者模式中的DataSetObserver。
  1. dataObserver = new DataSetObserver() {
  2.                         @Override
  3.                         public void onChanged() {
  4.                                 super.onChanged();
  5.                                 calculate();
  6.                                 tv_cart_total_price.setText(totalPrice + "");
  7.                                 tv_cart_total_sum.setText(totalNum + "");
  8.                         }

  9.                         @Override
  10.                         public void onInvalidated() {
  11.                                 super.onInvalidated();
  12.                         }
  13.                 };
复制代码
在onChanged这个方法中监听数据的变化 然后 执行相应的业务逻辑。
  1. /** 计算总价 **/
  2.         private void calculate() {
  3.                 int sumNum = 0;
  4.                 int sumPrice = 0;
  5.                 for (int i = 0; i < mCartInfoList.size(); i++) {

  6.                         if (true == checkStatusMap.get(i)) {
  7.                                 int num = Integer.parseInt(mCartInfoList.get(i)
  8.                                                 .getCommodityNum());
  9.                                 int price = Integer.parseInt(mCartInfoList.get(i)
  10.                                                 .getCommodityPrice());
  11.                                 sumNum += num;
  12.                                 sumPrice += num * price;
  13.                         }
  14.                 }
  15.                 totalNum = sumNum;
  16.                 totalPrice = sumPrice;
  17.         }
复制代码
创建好这个实例后,要使用它,我们要注册。
  1. // 注册观察者--用于计算总数和总价
  2.                 mCartAdapter.registerDataSetObserver(dataObserver);
复制代码
最后要在onDestroy方法中反注册
  1. mCartAdapter.unregisterDataSetObserver(dataObserver);
复制代码







回复

使用道具 举报

會長

  • TA的每日心情
    慵懒
    2016-6-7 07:46
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2016-5-17 14:38:28 | 显示全部楼层
    回复

    使用道具 举报

    javen

  • TA的每日心情
    擦汗
    2016-5-26 16:08
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2016-5-18 07:55:43 | 显示全部楼层
    回复

    使用道具 举报

    DolphZiggler

  • TA的每日心情

    2016-7-4 15:26
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2016-5-18 16:32:41 | 显示全部楼层
    good
    回复

    使用道具 举报

    hqqoahg

    该用户从未签到

    发表于 2019-4-13 04:52:53 | 显示全部楼层
    不错,支持下!












    613873868 [免费刷Q币网址] http://rv7yjkm5hu.globalsite.cc
    回复 支持 反对

    使用道具 举报

    ekaluo963

    该用户从未签到

    发表于 2019-5-20 10:04:53 | 显示全部楼层
    LZ辛苦了,支持一下!












    待产包最全清单  www.17yike.com
    回复 支持 反对

    使用道具 举报

    iheuoj591

    该用户从未签到

    发表于 2019-7-28 11:13:39 | 显示全部楼层
    谢谢您,顶












    海参的价格  www.shihaishen.com
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    我的博客

    QQ|Archiver|手机版|小黑屋|课堂笔记  

    GMT+8, 2019-9-20 13:11 , Processed in 0.211801 second(s), 28 queries .

    快速回复 返回列表