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);
        }
    }
  • 相关阅读:
    使用 libevent 和 libev 提高网络应用性能
    An existing connection was forcibly closed by the remote host
    各种浏览器的兼容css
    vs输出窗口,显示build的时间
    sass
    网站设置404错误页
    List of content management systems
    css footer not displaying at the bottom of the page
    强制刷新css
    sp_executesql invalid object name
  • 原文地址:https://www.cnblogs.com/yeyueweiliang/p/12305426.html
Copyright © 2011-2022 走看看