item的使用以及SQLite数据库增删改查

前言

该程序有两个版本,1是实现item使用,以及界面的增删;2增加了SQLite数据库的使用,可以保存数据。

一、主要知识点

1.item布局

主要运用ListView

    <ListView
        android:id="@+id/accountLV"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below = "@+id/addLL">
    </ListView>

2.BaseAdapter数据适配器

首先要继承BaseAdapter,实现下面代码中的四个函数

class MyBaseAdapter extends BaseAdapter{
   
        public int getCount(){
            return list.size();
        }
        public Object getItem(int position){
            return list.get(position);
        }
        public long getItemId(int position){
            return position;
        }
        //得到需要返回的条目
        public View getView(int position, View convertView, ViewGroup parent){
            return item;
        }
    }

运用

//定义
private MyBaseAdapter adapter;
//初始化
adapter = new MyBaseAdapter();
//ListView类运用
ListView accountLV.setAdapter(adapter);

更详细参考博文:http://www.cnblogs.com/mandroid/archive/2011/04/05/2005525.html

3.ListView的setSelection函数

一般来说,listview的数据是按输入顺序存放的,
这个函数的目的是输入后把光标移动到你输入的一行listview。
例如你的屏幕能放下10条数据,当你输入11条数据后,你将能看到第11条数据

例如输入商品名称:毛巾 金额:5

这里写图片描述

运用setSelection函数后显示

这里写图片描述

不运用setSelection函数后显示

这里写图片描述

4.List集合类

要记得实例化。

5.adapter.notifyDataSetChanged函数

刷新数据,重新调用BaseAdapter类的getView函数。

6.setOnItemClickListener(暂时没有领会用途)

7.SQLite数据库的使用

(1)继承SQLiteOpenHelper完成数据库表的创建
(2)创建数据库操作类。

在操作类中定义数据库

//shujuku是我继承SQLiteOpenHelper的类名
private shujuku helper;    
public AccountDao(Context context){
    helper = new shujuku(context);
}

    //插入数据
    public void insert(Account account){
        SQLiteDatabase db = helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name",account.getName());
        values.put("balance",account.getBalance());
        long id = db.insert("account",null,values);
        account.setId(id);
        db.close();
    }

    //删除数据
    public int delete(long id){
        SQLiteDatabase db = helper.getWritableDatabase();
        int count = db.delete("account","_id=?",new String[]{id+""});
        db.close();
        return count;
    }

    //更新数据
    public int update(Account account){
        SQLiteDatabase db = helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name",account.getName());
        values.put("balance",account.getBalance());
        int count = db.update("account",values,"_id = ?",new String[]{account.getId()+""});
        db.close();
        return count;
    }

    //查询所有数据的倒序排列
    public List<Account> queryAll(){
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor c = db.query("account",null,null,null,null,null,"balance DESC");
        List<Account> list = new ArrayList<Account>();
        while (c.moveToNext()){
            long id = c.getLong(c.getColumnIndex("_id"));
            String name = c.getString(1);
            int balance = c.getInt(2);
            list.add(new Account(id,name,balance));
        }
        c.close();
        db.close();
        return list;
    }

8.ContentValues类

  //ContentValues 和HashTable类似都是一种存储的机制 但是两者最大的区别就在于,
    // contenvalues只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,而HashTable却可以存储对象。
    //在忘数据库中插入数据的时候,首先应该有一个ContentValues的对象所以:
    //ContentValues initialValues = new ContentValues();
    //initialValues.put(key,values);
    // SQLiteDataBase sdb ;
    // sdb.insert(database_name,null,initialValues);
    //插入成功就返回记录的id否则返回-1;

9.SQLiteDatabase中的query

    //public  SQLiteDatabase   query  (String table, String[] columns, String selection, String[] selectionArgs,
    //String groupBy, String having, String orderBy, String limit)

这里写图片描述

二、犯下的错误

1.布局没有做好,导致遮挡。
2.没有认清错误的方向,花

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值