记账本开发流程:
对于一个记账本的初步开发而言,我实现的功能有:
①实现一个记账本的页面
②可以添加数据并更新到页面中
③可以将数据信息以图表的形式展现
(一)首先,制作一个记账本的页面。
①在系统自动创建的content_main.xml文件中添加ListvIEw
<ListVIEw androID:ID="@+ID/lv_main" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" />
②创建一个List_item.xml来实现见记账本的页面布局,一共需要三个组件,一个是记账信息,记账时间,记账金额
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="80dp" androID:orIEntation="vertical"> <TextVIEw 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" /> <TextVIEw 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"/> <TextVIEw 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"/></relativeLayout>
页面截图:
@H_403_27@
③编写适配器并进行测试,因此我们需要建立一个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<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() { 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里。
总结以上是内存溢出为你收集整理的android开发实战-记账本APP(一)全部内容,希望文章能够帮你解决android开发实战-记账本APP(一)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)