Android 小程序:随身记

My second Android app:随身记 !

至计算器完工后,我进入了中期项目 BillBook 的开发阶段。此项目是独立开发的小应用,运用了 Activity 与 Fragment 之间的来回转换,以及 SQLite 的数据动态增删改查,最后配上计算器的算法结合而成。写这篇 blog 时项目已经完成测试。下文我会简介思路。

< 开发思路与细节 >

(1) Activity / Fragment / SQLite 之间的关系

整理思路往往能极大增加效率

(2)创建 SQLite

暂时没有加上账号密码列,所以采用了三张表记录数据,分别为:Log / Shopping / Money 。用来记录日志/消费(含收入)/钱包。

log表:

        /**
         * Log 表
         * @LogId 自增主键,标示日志生成顺序序号
         * @LogTitle 日志标题,非空
         * @LogContent 日志内容,非空
         * @LogDate 日志提交日期,非空
         */
        String LogTable = "create table Log("+
        "LogId Integer primary key Autoincrement,"+
        "LogTitle text not null,"+
        "LogContent text not null,"+
        "LogDate date not null)";

shopping表:

        /**
         * Shopping 表
         * @checkId 自增主键
         * @payment 金融方式(现金/储蓄....支付宝)
         * @image 金融项目Logo地址(int),非空
         * @name 金融项目名称,非空
         * @money 金额
         * @sc 只存在 1 或 -1 ,判断支出 or 收入
         */
        String ShoppingTable = "create table Shopping("+
        "checkId Integer primary key Autoincrement,"+
        "payment Integer not null,"+
        "image Integer not null,"+
        "name text not null,"+
        "money text,"+
        "sc Integer)";

Money表:

        /**
         * Money 表
         * @MoneyAll 总资产
         * @MoneyCash 现金金额
         * @MoneyCashCard 储蓄卡余额
         * @MoneyCreditCard 信用卡余额
         * @MoneyPay 支付宝余额
         */

        String MoneyTable = "create table Money_xx("+
        "MoneyAll text primary key,"+
        "MoneyCash text,"+
        "MoneyCashCard text,"+
        "MoneyCreditCard text,"+
        "MoneyPay text)";

(3)Fragment 跳转至 Activity

Fragment 跳转至 Activity 中需要将 Intent 的第一个参数修改一下:
Linear_log.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Intent(getActivity(),
                NewLogActivity.class));
            }
        });

(4)账单界面 ListView 适配器

到这一步,项目已经快过半了,为什么呢?因为适配器的内容主要来自于整个项目最复杂的金融布局:

这里的数据源由数据库提取

数据库的查询我们先放一边,首先解决金融界面的[记 录]键对数据库产生的 Update 操作。金融界面会提交 sc 作为判定支出与收入,由于项目初期我没有将图片放入数据库而是放进数组,所以这里我用了一个很麻烦的方法解决图片索引的问题:新建一个全局变量 sos 记忆图片索引。

        int sos = -1; //图片选择器
        mGridView_Calculator.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if(mGridView_Calculator.getAdapter() == spendingAdapter){
                    mImageView_Calculator.setBackground(getResources().getDrawable(spendingLogoImage[position]));
                    mTextView_X2_ToEndOf_ImageView.setText(spendingLogoName[position]);
                    sos = -(position)-1; //根据 item 位置拿到 sos
                }else{
                    mImageView_Calculator.setBackground(getResources().getDrawable(incomeLogoImage[position]));
                    mTextView_X2_ToEndOf_ImageView.setText(incomeLogoName[position]);
                    sos = position+1; //让 sos 用正负区分来体现其意义
                }
            }
        });
当程序到达ListView的适配器中:
        int x = Integer.parseInt(list.get(i).get("image").toString());
            //收入
        if(x > 0)
            int income = incomeLogoImage[x-1];
            mImageView_CheckLogo.setBackground(context.getResources().getDrawable(income));
            //支出
        }else if( x < 0){
            int spending = spendingLogoImage[-x-1];
            mImageView_CheckLogo.setBackground(context.getResources().getDrawable(spending));
        }

经过几番调试后解决了这个棘手的问题,也为下次开发上了一课:一定想好再动手!思路永远比写更重要。

(5) MoneyAll (总资产)的值在更新时如何确定?

为什么会出现这种情况?总资产和4种下属资产在更新的时候写在一个 SQL 语句中会出现总资产偏差,我们更新的下属值应与总值正确区分,而不要让总资产多次运算。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值