Android开发之记账本开发第三天

志不强者智不达,言不信者行不果。这篇文章主要讲述Android开发之记账本开发第三天相关的知识,希望能为你提供帮助。
一、说在前面 昨天主要完成前期的准备和计划,并且完成了适配器的配置和测试,今天完成了完成数据库的部署和对业务逻辑的初步整理,明天对业务逻辑进行进一步的完善。没有遇到问题。 二、今天完成的源代码

Android开发之记账本开发第三天

文章图片
Android开发之记账本开发第三天

文章图片
package com.example.daliy; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import com.google.android.material.floatingactionbutton.FloatingActionButton; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ListView; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity {private List< CostBean> costBeanList; private DatabaseHelper helper; CostAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); costBeanList=new ArrayList< > (); helper=new DatabaseHelper(this); ListView costList=findViewById(R.id.lv_main); initCostData(); mAdapter = new CostAdapter(this, costBeanList); costList.setAdapter(mAdapter); FloatingActionButton fab = findViewById(R.id.fab); fab.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,null); final EditText cost_title=viewDialog.findViewById(R.id.et_cost_title); final EditText cost_money=viewDialog.findViewById(R.id.et_cost_money); final DatePicker cost_date=viewDialog.findViewById(R.id.dp_cost_date); builder.setTitle("新账目"); builder.setView(viewDialog); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { CostBean costBean=new CostBean(); costBean.costTitle=cost_title.getText().toString(); costBean.costMoney=cost_money.getText().toString(); costBean.costDate=cost_date.getYear()+"-"+(cost_date.getMonth()+1)+"-"+cost_date.getDayOfMonth(); helper.insertCost(costBean); costBeanList.add(costBean); mAdapter.notifyDataSetChanged(); } }); builder.setNegativeButton("Cancel",null); builder.create().show(); } }); }private void initCostData() { //helper.deleteAllCost(); //for(int i=0; i< 6; i++) { // //CostBean cb=new CostBean(); //cb.costDate="12-12"; //cb.costMoney="50"; //cb.costTitle=i+"heih"; //helper.insertCost(cb); //} Cursor cursor = helper.getAllCost(); 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")); costBeanList.add(costBean); } 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; }@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_chart) {Intent intent = new Intent(MainActivity.this,ChartActivity.class); startActivity(intent); intent.putExtra("cost_list", (Serializable) costBeanList); return true; } return super.onOptionsItemSelected(item); } }

MainActivity
Android开发之记账本开发第三天

文章图片
Android开发之记账本开发第三天

文章图片
package com.example.daliy; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import androidx.annotation.Nullable; public class DatabaseHelper extends SQLiteOpenHelper {public DatabaseHelper(@Nullable Context context) { super(context, Constants.TABLE_NAME, null, Constants.DATABASE_VERSION); }@Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table if not exists daily("+ "id integer primary key,"+ "cost_title varchar,"+ "cost_date varchar,"+ "cost_money varchar)"); }public void insertCost(CostBean costBean){ SQLiteDatabase database=getWritableDatabase(); ContentValues cv=new ContentValues(); cv.put(Constants.COST_TITLE,costBean.costTitle); cv.put(Constants.COST_DATE,costBean.costDate); cv.put(Constants.COST_MONEY,costBean.costMoney); database.insert(Constants.TABLE_NAME,null,cv); }public Cursor getAllCost(){SQLiteDatabase database=getWritableDatabase(); return database.query(Constants.TABLE_NAME,null,null,null,null,null,"cost_date asc"); }public void deleteAllCost(){ SQLiteDatabase database=getWritableDatabase(); database.delete(Constants.TABLE_NAME,null,null); }@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} }

DatabaseHelper
Android开发之记账本开发第三天

文章图片
Android开发之记账本开发第三天

文章图片
package com.example.daliy; public class Constants { public static final String TABLE_NAME="daily"; public static final int DATABASE_VERSION=1; public static final String COST_TITLE = "cost_title"; public static final String COST_DATE = "cost_date"; public static final String COST_MONEY = "cost_money"; }

Costants
Android开发之记账本开发第三天

文章图片
Android开发之记账本开发第三天

文章图片
< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> < EditText android:id="@+id/et_cost_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:hint="Cost Title" /> < EditText android:id="@+id/et_cost_money" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:hint="Cost Money" /> < DatePicker android:id="@+id/dp_cost_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:datePickerMode="spinner" android:calendarViewShown="false" android:layout_margin="4dp" /> < /LinearLayout>

new_cost 三、效果
Android开发之记账本开发第三天

文章图片

 
 
点击右下角的按键,就可以添加账目 
【Android开发之记账本开发第三天】
Android开发之记账本开发第三天

文章图片

 

  输入信息之后 
 
 
Android开发之记账本开发第三天

文章图片

 
  点击Cancel取消,点击ok保存之后就保存到了数据库中并显示出来
Android开发之记账本开发第三天

文章图片

 

 
 

    推荐阅读