android开发实战-记账本APP(一)

android开发实战-记账本APP(一),第1张

概述记账本开发流程:对于一个记账本的初步开发而言,我实现的功能有:①实现一个记账本的页面②可以添加数据并更新到页面中③可以将数据信息以图表的形式展现 (一)首先,制作一个记账本的页面。①在系统自动创建的content_main.xml文件中添加listview<ListViewandroid:id="

记账本开发流程:

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

①实现一个记账本的页面

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

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

 

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

①在系统自动创建的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(一)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1065861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存