记账本开发流程:
对于一个记账本的初步开发而言,我实现的功能有:
①实现一个记账本的页面
②可以添加数据并更新到页面中
③可以将数据信息以图表的形式展现
(一)首先,制作一个记账本的页面。
①在系统自动创建的content_main.xml文件中添加listview
②创建一个list_item.xml来实现见记账本的页面布局,一共需要三个组件,一个是记账信息,记账时间,记账金额
xml version="1.0" encoding="utf-8"?>
RelativeLayout>
页面截图:
③编写适配器并进行测试,因此我们需要建立一个CostListAdapter.java,还需要建立我们的bean对象,因此需要在建立一个CostBean来存储我们的
记账信息。
packagecom.example.xlfbook;importandroid.content.Context;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.TextView;importjava.util.List;public class CostListAdapter extendsBaseAdapter {private Listmlist;privateContext mContext;privateLayoutInflater mlayoutInflater;public CostListAdapter(Context context,Listlist){
mContext=context;
mlist=list;
mlayoutInflater=LayoutInflater.from(context);
}
@Overridepublic intgetCount() {returnmlist.size();
}
@Overridepublic Object getItem(intposition) {returnmlist.get(position);
}
@Overridepublic long getItemId(intposition) {returnposition;
}
@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {
ViewHolder viewHolder;if(convertView==null)
{
viewHolder=newViewHolder();
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);returnconvertView;
}private static classViewHolder{publicTextView mTvCostTitle;publicTextView mTvCostDate;publicTextView mTvCostMoney;
}
}
CostBean,这里implements的意义是为了一会的intent数据传递。
packagecom.example.xlfbook;importjava.io.Serializable;public class CostBean implementsSerializable {publicString costTitle;publicString costDate;publicString costMoney;
@OverridepublicString toString() {return "CostBean{" +
"costTitle='" + costTitle + '\'' +
", costDate='" + costDate + '\'' +
", costMoney='" + costMoney + '\'' +
'}';
}publicString getCostDate() {returncostDate;
}public voidsetCostDate(String costDate) {this.costDate =costDate;
}publicString getCostMoney() {returncostMoney;
}public voidsetCostMoney(String costMoney) {this.costMoney =costMoney;
}publicString getCostTitle() {returncostTitle;
}public voidsetCostTitle(String costTitle) {this.costTitle =costTitle;
}
}
④再然后在主程序中获取ListView并设置adapter,并进行适配器的测试。
(二)进行数据库的操作
①建立数据库实现增/删/查的方法实现。
packagecom.example.xlfbook;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroidx.annotation.Nullable;public class DatabaseHelper extendsSQLiteOpenHelper {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";publicDatabaseHelper(@Nullable Context context) {super(context, "imooc_daily", null, 1);
}
@Overridepublic voidonCreate(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 voidinsertCost(CostBean costBean)
{
SQLiteDatabase database=getWritableDatabase();
ContentValues cv=newContentValues();
cv.put(COST_TITLE,costBean.costTitle);
cv.put(COST_DATE,costBean.costDate);
cv.put(COST_MONEY,costBean.costMoney);
database.insert(IMOOC_COST,null,cv);
}publicCursor getAllCostData(){
SQLiteDatabase database=getWritableDatabase();return database.query("IMOOC_COST",null,null,null,null,null,"COST_DATE "+" ASC");
}public voiddeleteAllData(){
SQLiteDatabase database=getWritableDatabase();
database.delete("IMOOC_COST",null,null);
}
@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion) {
}
}
在这里新建了一个“imooc_daily”的数据库和“imooc_cost”表,并对他们以及数据信息(cost_title,cost_date,cost_money)进行了常量定义,以便其他程序的使用,并写了简单的增加、删除和查询数据的功能。
今天开发就到这里,明天继续开发实现“添加页面的显示与更新”以及“图表的实现”,最后会发布到github里。
文章来源: www.cnblogs.com,作者:清风紫雪,版权归原作者所有,如需转载,请联系作者。
原文链接:https://www.cnblogs.com/xiaofengzai/p/12258104.html