zoukankan      html  css  js  c++  java
  • 家庭记账本安卓版开发:第五天

    一、效果展示

     点击第一项查看详情

     修改其信息

     保存修改

     再次查看详情

     删除该账目

     二、问题

    对于下拉框组件的值的从数据库获取并赋值并不清楚,还有点击事件的失效情况与布局之间的关联

    三、部分原码

    activity_info.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:background="@mipmap/info"
        android:layout_height="match_parent">
    
        <TextView
            android:layout_width="wrap_content"
            android:text="账目信息"
            android:textSize="50sp"
            android:layout_gravity="center"
            android:layout_height="wrap_content"/>
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="40dp"
            android:layout_height="wrap_content">
    
            <TextView
                android:id="@+id/update_type"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="账目类型"
                android:textSize="20sp" />
    
            <TextView
                android:id="@+id/type_spin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_toRightOf="@+id/update_type" />
        </RelativeLayout>
    
        <EditText
            android:id="@+id/bill_money"
            android:layout_marginTop="20dp"
            android:layout_width="250dp"
            android:hint="请输入账目金额"
            android:inputType="number"
            android:layout_gravity="center"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/bill_date"
            android:layout_marginTop="20dp"
            android:layout_width="250dp"
            android:hint="请输入账目日期"
            android:inputType="date"
            android:textSize="18dp"
            android:layout_gravity="center"
            android:layout_height="wrap_content"/>
        <EditText
            android:id="@+id/bill_remark"
            android:layout_width="250dp"
            android:layout_marginTop="20dp"
            android:layout_gravity="center"
            android:hint="在此处添加备注"
            android:layout_height="wrap_content"/>
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_gravity="center"
            android:layout_height="wrap_content">
        <Button
            android:id="@+id/update_btn"
            android:layout_width="wrap_content"
            android:text="保存修改"
            android:layout_gravity="left"
            android:layout_height="wrap_content"/>
        <Button
            android:id="@+id/delete_btn"
            android:layout_width="wrap_content"
            android:layout_toRightOf="@+id/update_btn"
            android:layout_marginLeft="20dp"
            android:text="删除该账目"
            android:layout_height="wrap_content"/>
        </RelativeLayout>
    </LinearLayout>

    QueryAllActivity.java

    package com.example.familybook;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.content.Intent;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.ScrollView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import androidx.annotation.Nullable;
    
    import com.example.familybook.dao.BillDaoImpl;
    import com.example.familybook.dao.IBillDao;
    import com.example.familybook.entity.Bill;
    import com.example.familybook.utils.ShowBillsAdapter;
    import com.example.familybook.utils.ViewHolder;
    
    import java.util.List;
    
    public class QueryAllActivity extends Activity {
        private String mUsername;
        private String TAG="QueryAllActivity";
        private List <Bill> mShowBills;
        private List <ViewHolder> mViewHolder;
        private IBillDao mIBillDao;
        private SQLiteOpenHelper mBillDatabaseHelper;
        private ListView mShowBillList;
        private int mInfoCode=1;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_list);
            this.setTitle("总览账目信息");
    
            //获取登录者的用户名
            Intent intent =getIntent();
            mUsername =intent.getStringExtra("username");
            Log.e(TAG,"使用者:"+mUsername);
    
            //初始化控件
            initView();
    
            //获取表格布局
            mShowBillList=(ListView)findViewById(R.id.list_View);
    
            //获取从数据库获得的表单
            mShowBills=mIBillDao.listAllBill(mUsername);
    
            //新建并配置Show
            ShowBillsAdapter  ShowAdapter=new ShowBillsAdapter(mShowBills,this);
            mShowBillList.setAdapter(ShowAdapter);
            //添加事件监听
            initListener();
        }
    
    
    
    
        private void initListener() {
            mShowBillList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Bill bill =mShowBills.get(position);
                    int bill_id=bill.get_id();
                    Intent intent=new Intent();
                    intent.putExtra("username",mUsername);
                    intent.putExtra("bill_id",bill_id);
                    intent.setClass(QueryAllActivity.this,InfoActivity.class);
                    startActivityForResult(intent,mInfoCode);
                }
            });
    
        }
    
        private void initView() {
            mIBillDao =new BillDaoImpl(QueryAllActivity.this);
    
        }
        /**
         * 返回的结果在这里回调
         * @param requestCode
         * @param resultCode
         * @param data
         */
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            String resultContent = null;
            //当我们判断这个请求码的时候,就知道,这是哪个界面返回的结果
            if (requestCode==mInfoCode) {
                if(resultCode==2){
                    //注册成功
                    Toast.makeText(this,"修改成功",Toast.LENGTH_SHORT).show();
                }else if(requestCode==3){
                    //删除成功
                    Toast.makeText(this,"删除成功",Toast.LENGTH_SHORT).show();
                }
            }
        }
    }

    InfoActivity.java

    package com.example.familybook;
    
    import android.app.Activity;
    import android.app.DatePickerDialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.util.Log;
    import android.view.View;
    import android.widget.Adapter;
    import android.widget.AdapterView;
    import android.widget.Button;
    import android.widget.DatePicker;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import androidx.annotation.Nullable;
    
    import com.example.familybook.dao.BillDaoImpl;
    import com.example.familybook.dao.IBillDao;
    import com.example.familybook.entity.Bill;
    
    import java.util.Calendar;
    
    public class InfoActivity extends Activity {
        private Bill mBill;
        private String mUsername;
        private int mBillID;
        private int mYear;
        private int mMonth;
        private int mDay;
        private TextView mTypeSpin;
        private EditText mMoney;
        private TextView mDate;
        private EditText mRemark;
        private Button mUpdateBillBtn;
        private Button mDeleteBillBtn;
        private IBillDao mIBillDao;
        private String mTypeText;
        private String TAG="InfoActivity";
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_info);
    
            //获取登录者的用户名
            Intent intent =getIntent();
            mUsername =intent.getStringExtra("username");
            mBillID =intent.getIntExtra("bill_id",mBillID);
    
    
            Log.e(TAG,"使用者:"+mUsername);
            Log.e(TAG,"账单号:"+mBillID);
    
            //获取时间
            initDate();
    
            //初始化控件
            initView();
    
            //从数据库获取信息,并完成信息初始化
            mBill=mIBillDao.QueryBill(mBillID);
            initInfo();
            //添加监听事件
            initListener();
        }
    
        private void initInfo() {
            mTypeSpin.setText(mBill.getType());
            mMoney.setText(mBill.getMoney());
            mDate.setText(mBill.getDate());
            mRemark.setText(mBill.getRemark());
        }
    
        private void initDate() {
            //获取当前时间
            Calendar ca = Calendar.getInstance();
            mYear = ca.get(Calendar.YEAR);
            mMonth = ca.get(Calendar.MONTH);
            mDay = ca.get(Calendar.DAY_OF_MONTH);
        }
    
        private void initListener() {
    
            mDate.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //调用时间选择器
                    DatePickerDialog datePickerDialog = new DatePickerDialog(InfoActivity.this, R.style.MyDatePickerDialogTheme, onDateSetListener, mYear, mMonth, mDay);
                    //获取时间戳
                    long timeStamp = System.currentTimeMillis();
                    //设置可以显示的最晚的时间
                    datePickerDialog.getDatePicker().setMaxDate(timeStamp);
                    //弹框
                    datePickerDialog.show();
                }
            });
            mDeleteBillBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    deleteBill();
                }
            });
            mUpdateBillBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    updateBill();
                }
            });
    
        }
    
        /**
         * 进行修改
         */
        private void updateBill() {
            Bill bill=null;
            //获取账目类型
            mTypeText=mTypeSpin.getText().toString().trim();
            //获取账目金额
            String moneyText=mMoney.getText().toString().trim();
            //获取日期
            String  date= mDate.getText().toString().trim();
            //获取备注
            String remarkText=mRemark.getText().toString().trim();
            if(TextUtils.isEmpty(moneyText)){
                //账目金额为空
                Toast.makeText(this,"账目金额不可以为空",Toast.LENGTH_SHORT).show();
                return;
            }else if(TextUtils.isEmpty((CharSequence) date)){
                //账目日期为空
                Toast.makeText(this,"账目日期不可以为空",Toast.LENGTH_SHORT).show();
                return;
            }else {
                Log.e(TAG, "账户:" + mUsername);
                Log.e(TAG, "类型:" + mTypeText);
                Log.e(TAG, "金额:" + moneyText);
                Log.e(TAG, "日期:" + date);
                Log.e(TAG, "备注:" + remarkText);
                bill=new Bill(mUsername,mTypeText,moneyText,date,remarkText);
                boolean rs=mIBillDao.Update(mBillID,bill);
                Log.e(TAG,"rs:"+rs);
                if (rs ) {
                    //修改成功,跳回账页
                    Intent intent = new Intent();
                    setResult(2, intent);
                    finish();
                }
            }
        }
    
        /**
         * 进行删除
         */
        private void deleteBill() {
            boolean rs=mIBillDao.DeleteBill(mBillID);
            if(rs){
                //删除成功,跳回账页
                Intent intent = new Intent();
                setResult(3, intent);
                finish();
            }
    
        }
    
        /**
         * 日期选择器对话监听
         */
        private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
    
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                mYear = year;
                mMonth = monthOfYear;
                mDay = dayOfMonth;
    
                String days;
                if (mMonth + 1 < 10) {
                    if (mDay < 10) {
                        days = new StringBuffer().append(mYear).append("-").append("0").
                                append(mMonth + 1).append("-").append("0").append(mDay).append("").toString();
                    } else {
                        days = new StringBuffer().append(mYear).append("-").append("0").
                                append(mMonth + 1).append("-").append(mDay).append("").toString();
                    }
    
                } else {
                    if (mDay < 10) {
                        days = new StringBuffer().append(mYear).append("-").
                                append(mMonth + 1).append("-").append("0").append(mDay).append("").toString();
                    } else {
                        days = new StringBuffer().append(mYear).append("-").
                                append(mMonth + 1).append("-").append(mDay).append("").toString();
                    }
    
                }
    
                mDate.setText(days);
            }
        };
    
        private void initView() {
            mTypeSpin =(TextView) this.findViewById(R.id.type_spin);
            mMoney =(EditText)this.findViewById(R.id.bill_money);
            mDate =(TextView) this.findViewById(R.id.bill_date);
            mRemark=(EditText)this.findViewById(R.id.bill_remark);
            mUpdateBillBtn=(Button)this.findViewById(R.id.update_btn);
            mDeleteBillBtn=(Button)this.findViewById(R.id.delete_btn);
            mIBillDao  =new BillDaoImpl(InfoActivity.this);
        }
    }
  • 相关阅读:
    结对编程作业——毕设导师智能匹配
    结对项目之需求分析与原型设计
    Excel绘制之甘特图
    Excel绘图之数据波动条形图
    Excel绘图之漏斗图
    Excel绘图之四象限散点图
    软件工程实践总结
    发送手机验证码
    个人作业——软件产品案例分析
    用例图
  • 原文地址:https://www.cnblogs.com/yeyueweiliang/p/12305426.html
Copyright © 2011-2022 走看看