学习

布局管理器里面加入几个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) {
    }
}

 

posted @ 2022-02-11 21:01  清梦韶华  阅读(11)  评论(0编辑  收藏  举报