• 家庭记账本(三)


    今日进度:

    java类编写:

    CostBean.java

    package com.example.family;
    
    import java.io.Serializable;
    
    public class CostBean implements Serializable{
        public String costTitle;
        public String costDate;
        public String costMoney;
    }

    CostListAdapter.java

    package com.example.family;
    
    import android.content.Context;
    import android.graphics.ColorSpace;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.TextView;
    
    import java.util.List;
    
    public class CostListAdapter extends BaseAdapter{
    
        private List<CostBean> mList;
        private Context mContext;
        private LayoutInflater mLayoutInflater;
    
        public CostListAdapter(Context context,List<CostBean> list){
            mContext=context;
            mList=list;
            mLayoutInflater=LayoutInflater.from(context);
        }
        @Override
        public int getCount() {
            System.out.println(mList.size());
            return mList.size();
        }
    
        @Override
        public Object getItem(int position) {
            return mList.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            if(convertView==null){
                viewHolder=new ViewHolder();
                convertView=mLayoutInflater.inflate(R.layout.list_item,null);
                viewHolder.mTvCostTitle=(TextView)convertView.findViewById(R.id.tv_title);
                viewHolder.mTvCostDate=(TextView)convertView.findViewById(R.id.tv_date);
                viewHolder.mTvCostMoney=(TextView)convertView.findViewById(R.id.tv_cost);
                convertView.setTag(viewHolder);
            }else{
                viewHolder=(ViewHolder) convertView.getTag();
            }
            CostBean bean=mList.get(position);
            viewHolder.mTvCostTitle.setText(bean.costTitle);
            viewHolder.mTvCostDate.setText(bean.costDate);
            viewHolder.mTvCostMoney.setText(bean.costMoney);
            return convertView;
        }
    
        private static class ViewHolder{
            public TextView mTvCostTitle;
            public TextView mTvCostDate;
            public TextView mTvCostMoney;
        }
    }

    DatabaseHelper.java

    package com.example.family;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.widget.TextView;
    
    import androidx.annotation.Nullable;
    
    
    public class DatabaseHelper extends SQLiteOpenHelper {
    
        public static final String COST_MONEY = "cost_money";
        public static final String COST_DATE = "cost_date";
        public static final String COST_TITLE = "cost_title";
        public static final String TABLE = "familybook";
    
        public DatabaseHelper(@Nullable Context context) {
            super(context, TABLE, null, 1);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table if not exists familybook("+
                    "id integer primary key autoincrement ,"+
                    "cost_title varchar,"+
                    "cost_date varchar,"+
                    "cost_money varchar)");
        }
    
        public void insertCost(CostBean costBean){
            SQLiteDatabase database=getWritableDatabase();
            ContentValues cv=new ContentValues();
            cv.put(COST_TITLE,costBean.costTitle);
            cv.put(COST_DATE,costBean.costDate);
            cv.put(COST_MONEY,costBean.costMoney);
            database.insert(TABLE,null,cv);
        }
    
        public void deleteCost(CostBean costBean){
            SQLiteDatabase database=getWritableDatabase();
            database.delete(TABLE,"cost_title=?",new String[]{costBean.costTitle});
        }
    
    
        public Cursor getAllCostData(){
            SQLiteDatabase database=getWritableDatabase();
            return database.query(TABLE,null,null,null,null,null,COST_DATE+" ASC");
        }
    
        public  void deleteAllData(){
            SQLiteDatabase database=getWritableDatabase();
            database.delete(TABLE,null,null);
        }
    
        public  int countTotalCost(){
            int sum=0;
            SQLiteDatabase database=getWritableDatabase();
            String sum_dbString="select sum(cost_money)from "+TABLE;
            Cursor cursor=database.rawQuery(sum_dbString,null);
            if (cursor!=null){
                if (cursor.moveToFirst()){
                    do{
                        sum=cursor.getInt(0);
                    }while (cursor.moveToNext());
                }
            }
            return sum;
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
        }
    
    }

    MainActivity.java

    package com.example.family;
    
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.Cursor;
    import android.os.Bundle;
    import com.google.android.material.floatingactionbutton.FloatingActionButton;
    import com.google.android.material.snackbar.Snackbar;
    
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AlertDialog;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.appcompat.widget.Toolbar;
    
    import android.os.PersistableBundle;
    import android.renderscript.Sampler;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Button;
    import android.widget.DatePicker;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    public class MainActivity extends AppCompatActivity {
    
        private List<CostBean> mCostBeanList;
        private DatabaseHelper mDatabaseHelper;
        private CostListAdapter mAdapter;
        private TextView costTotal;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            mDatabaseHelper = new DatabaseHelper(this);
            mCostBeanList = new ArrayList<>();
            ListView costList = (ListView) findViewById(R.id.lv_main);
            initCostData();
            System.out.println("**********"+mCostBeanList);
            mAdapter =new CostListAdapter(this,mCostBeanList);
            costList.setAdapter(mAdapter);
    
            Button btn_add_in =findViewById(R.id.btn_add_in);
           btn_add_in.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                    LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
                    View viewDialog=inflater.inflate(R.layout.new_cost_data,null);
                    final EditText title=(EditText)viewDialog.findViewById(R.id.et_cost_title);
                    final EditText money=(EditText)viewDialog.findViewById(R.id.et_cost_money);
                    final DatePicker date=(DatePicker) viewDialog.findViewById(R.id.dp_cost_date);
                    builder.setView(viewDialog);
                    builder.setTitle("添加收入");
                    builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            final CostBean costBean=new CostBean();
                            costBean.costTitle=title.getText().toString();
                            costBean.costDate=date.getYear() + "-" + (date.getMonth()+1) + "-" +
                                    date.getDayOfMonth();
                            costBean.costMoney="+"+money.getText().toString();
                            mDatabaseHelper.insertCost(costBean);
                            mCostBeanList.add(costBean);
                            mAdapter.notifyDataSetChanged();
                            String string_total_cost="账户余额:"+mDatabaseHelper.countTotalCost();
                            costTotal =findViewById(R.id.tv_cost_total);
                            costTotal.setText(string_total_cost);
                        }
                    });
                    builder.setNegativeButton("取消",null);
                    builder.create().show();
                }
            });
    
            /**
             * 支出
             */
            Button btn_add_out =findViewById(R.id.btn_add_out);
            btn_add_out.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                    LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
                    View viewDialog=inflater.inflate(R.layout.new_cost_data,null);
                    final EditText title=(EditText)viewDialog.findViewById(R.id.et_cost_title);
                    final EditText money=(EditText)viewDialog.findViewById(R.id.et_cost_money);
                    final DatePicker date=(DatePicker) viewDialog.findViewById(R.id.dp_cost_date);
                    builder.setView(viewDialog);
                    builder.setTitle("添加支出");
                    builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            final CostBean costBean=new CostBean();
                            costBean.costTitle=title.getText().toString();
                            costBean.costDate=date.getYear() + "-" + (date.getMonth()+1) + "-" +
                                    date.getDayOfMonth();
                            costBean.costMoney="-"+money.getText().toString();
                            mDatabaseHelper.insertCost(costBean);
                            mCostBeanList.add(costBean);
                            mAdapter.notifyDataSetChanged();
                            String string_total_cost="账户余额:"+mDatabaseHelper.countTotalCost();
                            costTotal =findViewById(R.id.tv_cost_total);
                            costTotal.setText(string_total_cost);
                        }
                    });
                    builder.setNegativeButton("取消",null);
                    builder.create().show();
                }
            });
    
            /*
            删除
             */
            Button btn_delete = findViewById(R.id.btn_delete);
            btn_delete.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View view) {
                    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                    LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
                    View viewDialog=inflater.inflate(R.layout.delete_cost_data,null);
                    final EditText title=(EditText)viewDialog.findViewById(R.id.et_cost_title);
                    builder.setView(viewDialog);
                    builder.setTitle("删除账单");
                    builder.setPositiveButton("删除", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            CostBean costBean =new CostBean();
                            costBean.costTitle=title.getText().toString();
                            mDatabaseHelper.deleteCost(costBean);
                            mCostBeanList.clear();
                            initCostData();
                            mAdapter.notifyDataSetChanged();
                            String string_total_cost="账户余额:"+mDatabaseHelper.countTotalCost();
                            costTotal =findViewById(R.id.tv_cost_total);
                            costTotal.setText(string_total_cost);
                        }
                    });
                    builder.setNegativeButton("取消",null);
                    builder.create().show();
                }
            });
    
    
    
            /*
            计算余额
             */
    
        }
    
        /*
        初始化表单
         */
        private void initCostData() {
            Cursor cursor=mDatabaseHelper.getAllCostData();
            if(cursor!=null){
                while(cursor.moveToNext()){
                    CostBean costBean=new CostBean();
                    costBean.costTitle=cursor.getString(cursor.getColumnIndex("cost_title"));
                    costBean.costDate=cursor.getString(cursor.getColumnIndex("cost_date"));
                    costBean.costMoney=cursor.getString(cursor.getColumnIndex("cost_money"));
                    mCostBeanList.add(costBean);
                    String string_total_cost="账户余额:"+mDatabaseHelper.countTotalCost();
                    costTotal =findViewById(R.id.tv_cost_total);
                    costTotal.setText(string_total_cost);
                }
                cursor.close();
            }
        }
        @Override
            public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
    }
  • 相关阅读:
    ElasticSearch工作原理
    prometheus监控es集群
    es索引调优
    ES中Refresh和Flush的区别
    网络服务器技术Apache与Nginx,IIS的不同
    shell里/dev/fd与/proc/self/fd的区别
    常用抓包工具
    Ubuntu Kubuntu Xubuntu Lubuntu Dubuntu Mythbuntu UbuntuBudgie区别
    Android的Looper.loop()消息循环机制
    申请读写sd卡权限shell
  • 原文地址:https://www.cnblogs.com/marr/p/14902451.html
Copyright © 2020-2023  润新知