前言
该程序有两个版本,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.没有认清错误的方向,花