java bookkeeping_Android————一个简单记账本(Bookkeeping)

实现功能:

1:先将数据添加到数据库中(SQLite)

2: 使用RecyclerView将数据库中的数据展示出来

//备注:带加号的ImageButton用于添加数据,带勾的ImageButton用于获取数据并展示

//先按带加号的在按带勾的

第一步建立一个实体类Event

代码如下:

public class Event {

private String Title;

private String Time;

private double Money;

public Event(){

}

public Event(String Title, String Time, double Money)

{

this.Title = Title;

this.Time = Time;

this.Money = Money;

}

public String getTitle() {

return Title;

}

public String getTime() {

return Time;

}

public double getMoney() {

return Money;

}

public void setTitle(String Title) {

this.Title = Title;

}

public void setTime(String Time) {

this.Time = Time;

}

public void setMoney(double Money) {

this.Money = Money;

}

}

第二步建立一个MyHelper类用于继承SQLiteOpenHelper类

代码如下:

public class MyHelper extends SQLiteOpenHelper {

public static final String DataBaseName = “Bookkeeping.db”;

public static final SQLiteDatabase.CursorFactory factory = null;

public static final int version = 1;

public static final String Title = "Title";

public static final String Time = "Time";

public static final String Money = "Money";

public static final String TableName = "BookkeepingTable";

public MyHelper(@Nullable Context context) {

super(context, DataBaseName, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db) {

String sql = "create table "+ TableName +" ( "+Title+" varchar(20) primary key, "+Time+" varchar(20), "+Money+" Double);";

// String sql = “create table BookkeepingTable (”

// + "Title text primary key, "

// + "Time text, "

// + “Money double)”;

db.execSQL(sql);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("drop table if exists "+TableName);

onCreate(db);

}

}

第三步:建立Dao类用于实现插入功能

代码如下:

public class Dao {

public static final String TAG = “Bookkeeping”;

private SQLiteDatabase DB;

private MyHelper helper;

public Dao(Context context){

helper = new MyHelper(context);

}

public void Insert(Event event){

DB = helper.getReadableDatabase();

if (DB.isOpen())

{

ContentValues values = new ContentValues();

values.put(MyHelper.Title,event.getTitle());

values.put(MyHelper.Time,event.getTime());

values.put(MyHelper.Money,event.getMoney());

long RowId = DB.insert(MyHelper.TableName,null,values);

if(RowId == -1)

Log.i(TAG, “数据插入失败!”);

else

Log.i(TAG, “数据插入成功!”+RowId);

DB.close();

}

}

}

第四步:建立一个recyclerview_item.xml用于与Recyclerview适配器匹配

效果图如下:

caf28b885e6be09d5087b3a47bc8d4bc.png

代码如下: <?xml version="1.0" encoding="utf-8"?>

第五步:创建一个MyRecyclerView类用于继承RecyclerView.Adapter适配器 代码如下: public class MyRecyclerView extends RecyclerView.Adapter

}

第六步:建立一个AddThing活动用于获取输入的数据和插入数据库中

AddThing.java代码如下:

public class AddThing extends AppCompatActivity implements DatePicker.OnDateChangedListener{

private RadioGroup Group;

private RadioButton Pay,InCome;

private DatePicker datePicker;

private TextView TipsTitle,TipsTime,TipsMoney,TipsMoneyType;

private EditText editTitle,editTime,editMoney;

private Button btn_Submit;

public static int MoneyType = 0;

public static String DatePickerTime = null;

public static String Title = null;

public static String Time = null;

public static double Money = 0;

Dao dao = null;

Event event = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_add_thing);

btn_Submit = (Button) findViewById(R.id.submit);

datePicker = (DatePicker) findViewById(R.id.addThing);

Group = (RadioGroup) findViewById(R.id.Group);

Pay = (RadioButton) findViewById(R.id.Pay);

InCome = (RadioButton) findViewById(R.id.InCome);

TipsMoneyType = (TextView) findViewById(R.id.TipsMoneyType);

TipsTitle = (TextView) findViewById(R.id.TipsTitle);

TipsTime = (TextView) findViewById(R.id.TipsTime);

TipsMoney = (TextView) findViewById(R.id.TipsMoney);

editTitle = (EditText) findViewById(R.id.editTitle);

editTime = (EditText) findViewById(R.id.editTime);

editMoney = (EditText) findViewById(R.id.editMoney);

Calendar calendar = Calendar.getInstance();

int year = calendar.get(Calendar.YEAR);

int monthOfYear = calendar.get(Calendar.MONTH);

int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);

datePicker.init(year, monthOfYear, dayOfMonth, this);

Group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

RadioButton radioButton = (RadioButton) group.findViewById(checkedId);

if (radioButton.getText().equals("支付")) {

MoneyType = 1;

} else {

MoneyType = 0;

}

}

});

btn_Submit.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

dao = new Dao(AddThing.this);//创建数据库和表

Title = editTitle.getText().toString().trim();

Time = editTime.getText().toString();

try {

Money = Double.valueOf(editMoney.getText().toString());

} catch (NumberFormatException e) {

e.printStackTrace();

}

if ("".equals(Title))

{

Toast.makeText(AddThing.this,"不能为空",Toast.LENGTH_SHORT).show();

return;

}

dao.Insert(new Event(Title,Time,Money));

Log.d(Dao.TAG,"succees!");

}

});

}

@Override

public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

editTime.setText(year + "-"+ monthOfYear+ "-"+ dayOfMonth+ "");

}

}

activity_add_thing.xml文件如下:

效果图如下:

c2280377240cf84199c229691f4cf32a.png

//备注:RadioGroup暂未使用,到后面可以统计一个月或者更长时间的的收入或者花费的金额

代码如下: <?xml version="1.0" encoding="utf-8"?>

android:id="@+id/Group"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginLeft="100dp">

android:id="@+id/Pay"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="支付"/>

android:id="@+id/InCome"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="收入"/>

android:id="@+id/TipsTitle"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="请输入主题:"

android:layout_marginTop="120dp"/>

android:id="@+id/editTitle"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="Please input title:"

android:layout_marginLeft="90dp"

android:layout_marginTop="105dp"/>

android:id="@+id/TipsTime"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="请选择时间:"

android:layout_below="@id/TipsTitle"

android:layout_marginTop="50dp"/>

android:id="@+id/editTime"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="Please choose time:"

android:layout_below="@id/editTitle"

android:layout_marginTop="23dp"

android:layout_marginLeft="80dp"/>

android:id="@+id/addThing"

android:layout_width="match_parent"

android:layout_height="100dp"

android:calendarViewShown="false"

android:spinnersShown="true"

android:datePickerMode="spinner"

android:headerBackground="#ffffff"

android:layout_below="@id/editTime"

android:layout_marginTop="20dp"/>

android:id="@+id/TipsMoney"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="请输入金额:"

android:layout_marginTop="20dp"

android:layout_below="@id/addThing"/>

android:id="@+id/editMoney"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="Please input money:"

android:layout_below="@id/addThing"

android:layout_marginLeft="80dp"

android:layout_marginTop="3dp"/>

android:id="@+id/submit"

android:layout_height="wrap_content"

android:layout_width="100dp"

android:text="Submit"

android:layout_below="@id/editMoney"

android:textAllCaps="false"

android:layout_marginTop="80dp"

android:gravity="center"

android:layout_marginLeft="150dp"/> 第七步:接收来自数据库中的数据并使用RecyclerView控件展示 MainActivity.java中的代码如下: public class MainActivity extends AppCompatActivity { private RecyclerView Recyclerview; private ImageButton imageButton,imageButtonGet; private MyRecyclerView adapter; private List EventList = new ArrayList<>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Recyclerview = (RecyclerView) findViewById(R.id.EventDisplayInterface);

imageButton = (ImageButton) findViewById(R.id.AddButton);

imageButtonGet = (ImageButton) findViewById(R.id.getInformation);

//绑定适配器

LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this);

Recyclerview.setLayoutManager(manager);

adapter = new MyRecyclerView(EventList);

Recyclerview.setAdapter(adapter);

imageButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(MainActivity.this,AddThing.class);

startActivity(intent);

}

});

imageButtonGet.setOnClickListener(new View.OnClickListener() {

Event event = new Event();

@Override

public void onClick(View v) {

String Title = AddThing.Title;

String Time = AddThing.Time;

double Money = AddThing.Money;

if ( ("".equals(Title)) && ( "".equals(Time)))

{

Toast.makeText(MainActivity.this,"内容不能为空",Toast.LENGTH_SHORT).show();

}

else {

event = new Event(Title, Time, Money);

EventList.add(event);

adapter.notifyItemChanged(EventList.size() - 1);

Recyclerview.scrollToPosition(EventList.size() - 1);

Toast.makeText(MainActivity.this,"111111111",Toast.LENGTH_SHORT).show();

}

}

});

}

}

activity_main.xml文件如下:

效果图如下:

93f371b0cae8534a2e675829704d5952.png

//备注:带加号的ImageButton用于添加数据,带勾的ImageButton用于获取数据并展示

//先按带加号的在按带勾的

代码如下: <?xml version="1.0" encoding="utf-8"?>

android:id="@+id/EventDisplayInterface"

android:layout_width=“match_parent”

android:layout_height=“wrap_content”/>

/所以代码到这里已经完结,以下为AVD运行效果图***************/

429328f80d3d77f8b8a2d0e50771f8da.png

821dbf5f811bfcdf25bc5d704fbce5c2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值