记账本开发流程:

对于一个记账本的初步开发而言,我实现的功能有:

①实现一个记账本的页面

②可以添加数据并更新到页面中

③可以将数据信息以图表的形式展现

 

(一)首先,制作一个记账本的页面。

①在系统自动创建的content_main.xml文件中添加listview

android:id="@+id/lv_main"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

②创建一个list_item.xml来实现见记账本的页面布局,一共需要三个组件,一个是记账信息,记账时间,记账金额

android:layout_width="match_parent"

android:layout_height="80dp"

android:orientation="vertical">

android:id="@+id/tv_title"

android:layout_width="150dp"

android:layout_height="80dp"

android:layout_marginLeft="10dp"

android:layout_alignParentLeft="true"

android:gravity="center"

android:singleLine="true"

android:textSize="35sp"

android:text="costTitle"

android:ellipsize="marquee" />

android:id="@+id/tv_date"

android:layout_width="wrap_content"

android:layout_height="80dp"

android:layout_toRightOf="@+id/tv_title"

android:layout_marginLeft="15dp"

android:textSize="20sp"

android:gravity="center"

android:text="costDate"/>

android:id="@+id/tv_cost"

android:layout_width="wrap_content"

android:layout_height="80dp"

android:text="30"

android:textSize="30sp"

android:layout_marginRight="20dp"

android:layout_alignParentRight="true"

android:gravity="center"/>

页面截图:

 

 

 ③编写适配器并进行测试,因此我们需要建立一个CostListAdapter.java,还需要建立我们的bean对象,因此需要在建立一个CostBean来存储我们的

记账信息。

package com.example.xlfbook;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

import java.util.List;

public class CostListAdapter extends BaseAdapter {

private List mlist;

private Context mContext;

private LayoutInflater mlayoutInflater;

public CostListAdapter(Context context,List list){

mContext=context;

mlist=list;

mlayoutInflater=LayoutInflater.from(context);

}

@Override

public int getCount() {

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(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder;

if(convertView==null)

{

viewHolder=new ViewHolder();

convertView=mlayoutInflater.inflate(R.layout.list_item,null);

viewHolder.mTvCostTitle=convertView.findViewById(R.id.tv_title);

viewHolder.mTvCostDate=convertView.findViewById(R.id.tv_date);

viewHolder.mTvCostMoney=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;

}

}

CostBean,这里implements的意义是为了一会的intent数据传递。

package com.example.xlfbook;

import java.io.Serializable;

public class CostBean implements Serializable {

public String costTitle;

public String costDate;

public String costMoney;

@Override

public String toString() {

return "CostBean{" +

"costTitle='" + costTitle + '\'' +

", costDate='" + costDate + '\'' +

", costMoney='" + costMoney + '\'' +

'}';

}

public String getCostDate() {

return costDate;

}

public void setCostDate(String costDate) {

this.costDate = costDate;

}

public String getCostMoney() {

return costMoney;

}

public void setCostMoney(String costMoney) {

this.costMoney = costMoney;

}

public String getCostTitle() {

return costTitle;

}

public void setCostTitle(String costTitle) {

this.costTitle = costTitle;

}

}

④再然后在主程序中获取ListView并设置adapter,并进行适配器的测试。

 

(二)进行数据库的操作

①建立数据库实现增/删/查的方法实现。

package com.example.xlfbook;

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 static final String COST_TITLE = "cost_title";

public static final String COST_DATE = "cost_date";

public static final String COST_MONEY = "cost_money";

public static final String IMOOC_COST = "imooc_cost";

public DatabaseHelper(@Nullable Context context) {

super(context, "imooc_daily", null, 1);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("create table if not exists IMOOC_COST("+

"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(COST_TITLE,costBean.costTitle);

cv.put(COST_DATE,costBean.costDate);

cv.put(COST_MONEY,costBean.costMoney);

database.insert(IMOOC_COST,null,cv);

}

public Cursor getAllCostData(){

SQLiteDatabase database=getWritableDatabase();

return database.query("IMOOC_COST",null,null,null,null,null,"COST_DATE "+" ASC");

}

public void deleteAllData(){

SQLiteDatabase database=getWritableDatabase();

database.delete("IMOOC_COST",null,null);

}

@Override

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

}

}

在这里新建了一个“imooc_daily”的数据库和“imooc_cost”表,并对他们以及数据信息(cost_title,cost_date,cost_money)进行了常量定义,以便其他程序的使用,并写了简单的增加、删除和查询数据的功能。

 

今天开发就到这里,明天继续开发实现“添加页面的显示与更新”以及“图表的实现”,最后会发布到github里。

文章来源

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。