学习
布局管理器里面加入几个Button和一个ListView:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/selector" > <ListView android:id="@+id/main_lv" android:layout_width="wrap_content" android:layout_height="250dp" android:layout_alignParentRight="true" android:layout_below="@+id/textView2" android:divider="@null" android:dividerHeight="6dp" android:padding="0dp" android:scrollbars="none" > </ListView> <com.example.jizhangben1.TextViewMy android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/main_top_layout" android:text=" --分类 -----金额-----日期--" android:textSize="25dp" /> <Button android:id="@+id/btn_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_toLeftOf="@+id/btn_help" android:background="@drawable/button_selector" android:text="+" android:textColor="#000000" android:textSize="25dp" /> <RelativeLayout android:id="@+id/main_top_layout" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" > <ImageView android:id="@+id/main_iv_search" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:padding="10dp" /> <com.example.jizhangben1.TextViewMy android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="妈妈专用记账本" android:textSize="25dp" android:background="@drawable/addbutton" /> </RelativeLayout> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignTop="@+id/btn_add" android:src="@drawable/dibian" /> <Button android:id="@+id/btn_help" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:background="@drawable/button_selector" android:text="···" android:textColor="#000000" android:textSize="25dp" /> <TextView android:id="@+id/sum" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/imageView1" android:layout_marginBottom="26dp" android:layout_marginLeft="18dp" android:layout_toRightOf="@+id/tableRow1" android:text="0" /> </RelativeLayout>
SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
1、Context类型,上下文对象。
2、String类型,数据库的名称
3、CursorFactory类型
4、int类型,数据库版本
所以,第一步,需要新建一个类继承SQLiteOpenHelper
package com.example.jizhangben1;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter {
//使用list<Nate>,list会存储数据库中note表所有记录。
private List<Zhangdan> list;
//用于将某个布局转换为view的对象。
private LayoutInflater layoutInflater;
//当创建MyAdapter对象的时候,需要list的数据
public MyAdapter(List<Zhangdan> list, Context context){
this.list=list;
layoutInflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.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){
convertView=layoutInflater.inflate(R.layout.zd_item,null,false);
viewHolder=new ViewHolder(convertView);
convertView.setTag(viewHolder);
}else {
viewHolder=(ViewHolder)convertView.getTag();
}
//将数据库中的内容加载到对应的控件上
Zhangdan zd =(Zhangdan) getItem(position);
viewHolder.kongge1.setText(zd.getKongge1());
viewHolder.tv_fenlei.setText(zd.getFenlei());
viewHolder.kongge2.setText(zd.getKongge2());
viewHolder.tv_num.setText(zd.getNum());
viewHolder.kongge3.setText(zd.getKongge3());
viewHolder.tv_data.setText(zd.getData());
return convertView;
}
//用于给item的视图加载数据内容。
class ViewHolder{
private TextView kongge1,kongge2,kongge3;
private TextView tv_num;
private TextView tv_fenlei;
private TextView tv_data;
public ViewHolder(View view){
kongge1=(TextView) view.findViewById(R.id.kongge1);
tv_fenlei=(TextView) view.findViewById(R.id.zd_fenlei);
kongge2=(TextView) view.findViewById(R.id.kongge2);
tv_num=(TextView) view.findViewById(R.id.zd_num);
kongge3=(TextView) view.findViewById(R.id.kongge3);
tv_data=(TextView) view.findViewById(R.id.zd_data);
}
}
}
package com.example.jizhangben1;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.view.View;
public class DBHelper extends SQLiteOpenHelper {
private SQLiteDatabase db;
ContentValues contentValues = new ContentValues();
public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
db=this.getWritableDatabase();
// String dirPath="/data/data/"+"com.example.jizhangben1"+"/databases/";;
// db=SQLiteDatabase.openOrCreateDatabase(dirPath+"data.db",null);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table zhangdan(_id integer primary key autoincrement,kongge1 text,fenlei text,kongge2 text,num text,kongge3 text,data text)");
}
//添加数据
public boolean insert(String fenlei,String num,String data) {
contentValues.put("kongge1", " ");
contentValues.put("fenlei", fenlei);
contentValues.put("kongge2", " ");
contentValues.put("num", num);
int mon=Integer.parseInt(num);
if((mon>-10)){
contentValues.put("kongge3","¥ ");
}
else if(mon<=-10&&mon>=-99){
contentValues.put("kongge3","¥ ");
}
else if(mon<-99&&mon>=-999){
contentValues.put("kongge3","¥ ");
}
else if(mon<-999&&mon>-9999){
contentValues.put("kongge3","¥ ");
}
else if(mon<10&&mon>0){
contentValues.put("kongge3","¥ ");
}
else if(mon>=10&&mon<=99){
contentValues.put("kongge3","¥ ");
}
else if(mon>99&&mon<=999){
contentValues.put("kongge3","¥ ");
}
else if(mon>999&&mon<9999){
contentValues.put("kongge3","¥ ");
}
contentValues.put("data", data);
long result = db.insert("zhangdan", null, contentValues);
return result > 0 ? true : false;
}
public boolean delete(String id){
int result=db.delete("zhangdan","_id=?",new String[]{id});
return result>0?true:false;
}
//修改数据,根据id进行修改
public boolean update(String id,String fenlei,String num,String data){
contentValues.put("_id",id);
contentValues.put("kongge1", " ");
contentValues.put("kongge2", " ");
contentValues.put("fenlei",fenlei);
contentValues.put("num",num);
int mon=Integer.parseInt(num);
if((mon>-10)){
contentValues.put("kongge3","¥ ");
}
else if(mon<=-10&&mon>=-99){
contentValues.put("kongge3","¥ ");
}
else if(mon<-99&&mon>=-999){
contentValues.put("kongge3","¥ ");
}
else if(mon<-999&&mon>-9999){
contentValues.put("kongge3","¥ ");
}
else if(mon<10&&mon>0){
contentValues.put("kongge3","¥ ");
}
else if(mon>=10&&mon<=99){
contentValues.put("kongge3","¥ ");
}
else if(mon>99&&mon<=999){
contentValues.put("kongge3","¥ ");
}
else if(mon>999&&mon<9999){
contentValues.put("kongge3","¥ ");
}
contentValues.put("data",data);
int result=db.update("zhangdan",contentValues,"_id=?",new String[]{id});
return result>0?true:false;
}
//查询数据,查询表中的所有内容,将查询的内容用note的对象属性进行存储,并将该对象存入集合中。
//查询数据,查询表中的所有内容,将查询的内容用note的对象属性进行存储,并将该对象存入集合中。
public List<Zhangdan> query(){//查询所有的信息
List<Zhangdan> list = new ArrayList<Zhangdan>();
list.clear();//清空数据
//查询全部数据
Cursor cursor = db.rawQuery("select * from zhangdan" ,null);
while(cursor.moveToNext()){
int sum=0;
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
String kongge1=cursor.getString(cursor.getColumnIndex("kongge1"));
String fenlei = cursor.getString(cursor.getColumnIndex("fenlei"));//获取分类
String kongge2=cursor.getString(cursor.getColumnIndex("kongge2"));
String data = cursor.getString(cursor.getColumnIndex("data"));//获取日期
String kongge3=cursor.getString(cursor.getColumnIndex("kongge3"));
String num = cursor.getString(cursor.getColumnIndex("num"));//获取金额
int mon=Integer.parseInt(num);
sum+=mon;
String a=String.valueOf(_id)+kongge1+fenlei+kongge2+num+kongge3+data;
System.out.print(sum);
System.out.print(a);
Zhangdan zd = new Zhangdan(String.valueOf(_id),kongge1,fenlei,kongge2,num,kongge3,data);
list.add(zd);//将新对象添加到list集合
}
//System.out.println("数目:"+list.size());
// 最后会释放 资源
cursor.close();
return list;//将所有信息返回
}
public int sum(){//查询所有的信息
List<Zhangdan> list = new ArrayList<Zhangdan>();
list.clear();//清空数据
//查询全部数据
Cursor cursor = db.rawQuery("select * from zhangdan" ,null);
int sum=0;
while(cursor.moveToNext()){
String num = cursor.getString(cursor.getColumnIndex("num"));//获取金额
int mon=Integer.parseInt(num);
sum+=mon;
}
cursor.close();
return sum;//将所有信息返回
}
public int out(){//查询所有的信息
List<Zhangdan> list = new ArrayList<Zhangdan>();
list.clear();//清空数据
//查询全部数据
Cursor cursor = db.rawQuery("select * from zhangdan" ,null);
int out=0;
while(cursor.moveToNext()){
String num = cursor.getString(cursor.getColumnIndex("num"));//获取金额
int mon=Integer.parseInt(num);
while(mon<0){
out+=mon;
}
}
cursor.close();
return out;//将所有信息返回
}
public int in(){//查询所有的信息
List<Zhangdan> list = new ArrayList<Zhangdan>();
list.clear();//清空数据
//查询全部数据
Cursor cursor = db.rawQuery("select * from zhangdan" ,null);
int in=0;
while(cursor.moveToNext()){
String num = cursor.getString(cursor.getColumnIndex("num"));//获取金额
int mon=Integer.parseInt(num);
while(mon>0){
in+=mon;
}
}
cursor.close();
return in;//将所有信息返回
}
public Zhangdan get(String data) {
Zhangdan zd=new Zhangdan();
Cursor result=db.query("zhangdan",null,"data=?",new String[]{data},
null,null,null,null);
if (result.getCount()==1){
result.moveToFirst();
zd.setKongge1(result.getString(1));
zd.setFenlei(result.getString(2));
zd.setKongge2(result.getString(3));
zd.setNum(result.getString(4));
zd.setKongge3(result.getString(5));
zd.setData(result.getString(6));
return zd;
}else {
zd.setKongge1(null);
zd.setKongge2(null);
zd.setKongge3(null);
zd.setNum(null);
zd.setFenlei(null);
zd.setData(null);
return zd;
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}


浙公网安备 33010602011771号