java

package com.sxt.day06_10;

import java.util.ArrayList;

import com.sxt.day06_10.entity.StudentBean;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView; public class MainActivity extends Activity {
StudentDBHelper mDao; ListView mlvStudent;
ArrayList<StudentBean> mStudents;
StudentAdapter mAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDao=new StudentDBHelper(this);
initData();
initView();
} private void initView() {
mlvStudent=(ListView) findViewById(R.id.lvStudent);
mAdapter=new StudentAdapter(mStudents, this, mDao);
mlvStudent.setAdapter(mAdapter);
} private void initData() {
mStudents=mDao.queryAll();
} class StudentAdapter extends BaseAdapter{
ArrayList<StudentBean> students;
Context context;
StudentDBHelper dao; public StudentAdapter(ArrayList<StudentBean> students, Context context,//Context是Activity的父类
StudentDBHelper dao) {
super();
this.students = students;
this.context = context;
this.dao = dao;
} public void remove(int position){//列表的删除
dao.deleteRecord(students.get(position).getId());
students.remove(position);
notifyDataSetChanged();
} public void add(StudentBean bean){//列表的增加
students.add(bean);
notifyDataSetChanged();
dao.insertRecored(bean);
} public void update(int position,StudentBean bean){
students.set(position, bean);
notifyDataSetChanged();
dao.updateRecord(bean);
} @Override
public int getCount() {
return students.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
//缓存第一屏的所有convertView(比如10个)
convertView=View.inflate(context, R.layout.item_student, null);
holder=new ViewHolder();
holder.tvName=(TextView) convertView.findViewById(R.id.tvName);
holder.tvSex=(TextView) convertView.findViewById(R.id.tvSex);
holder.tvBirthday=(TextView) convertView.findViewById(R.id.tvBirthday);
holder.tvHeight=(TextView) convertView.findViewById(R.id.tvHeight);
convertView.setTag(holder);
}else{
//滚屏的时候获取缓存的所有convertView(比如10个)
holder=(ViewHolder) convertView.getTag();
}
//修改成新的
StudentBean bean=students.get(position);
holder.tvName.setText(bean.getName());
holder.tvSex.setText(bean.getSex());
holder.tvBirthday.setText(bean.getBirthday());
holder.tvHeight.setText(bean.getHeight()+"");
return convertView;
}
class ViewHolder{
TextView tvName,tvSex,tvBirthday,tvHeight;
} }
}
package com.sxt.day06_10;

import java.util.ArrayList;

import com.sxt.day06_10.entity.StudentBean;

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; public class StudentDBHelper extends SQLiteOpenHelper { private static final String DB_NAME="students.db";
static final String TABLE_NAME="student";
static final String ID="_id";
static final String NAME="name";
static final String SEX="sex";
static final String BIRTHDAY="birthday";
static final String HEIGHT="height"; public StudentDBHelper(Context context) {
super(context, DB_NAME, null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
String sql="create table if not exists "+TABLE_NAME+"("
+ID+" integer primary key autoincrement,"
+NAME+" varchar(50),"
+SEX+" varchar(2),"
+BIRTHDAY+" datetext,"
+HEIGHT+" real)";
db.execSQL(sql);
insertRecords(db);
} private void insertRecords(SQLiteDatabase db) {
ContentValues values=new ContentValues();
values.put(NAME, "张飞");
values.put(SEX, "男");
values.put(BIRTHDAY, "1990-5-5");
values.put(HEIGHT, 1.99);
db.insert(TABLE_NAME, null, values); values=new ContentValues();
values.put(NAME, "王菲");
values.put(SEX, "女");
values.put(BIRTHDAY, "1990-8-5");
values.put(HEIGHT, 1.69);
db.insert(TABLE_NAME, null, values); values=new ContentValues();
values.put(NAME, "刘亦菲");
values.put(SEX, "女");
values.put(BIRTHDAY, "1991-5-5");
values.put(HEIGHT, 1.7);
db.insert(TABLE_NAME, null, values); values=new ContentValues();
values.put(NAME, "李菲");
values.put(SEX, "女");
values.put(BIRTHDAY, "1992-5-5");
values.put(HEIGHT, 1.72);
db.insert(TABLE_NAME, null, values); values=new ContentValues();
values.put(NAME, "田菲");
values.put(SEX, "男");
values.put(BIRTHDAY, "1993-5-5");
values.put(HEIGHT, 1.78);
db.insert(TABLE_NAME, null, values);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub } /**
* 向表中增加一条记录
* @param bean
* @return
*/
public int insertRecored(StudentBean bean){
ContentValues values=new ContentValues();
values.put(NAME, bean.getName());
values.put(SEX, bean.getSex());
values.put(BIRTHDAY, bean.getBirthday());
values.put(HEIGHT, bean.getHeight());
SQLiteDatabase db = getWritableDatabase();//getWritableDatabase()是SQLiteOpenHelper的方法
long count = db.insert(TABLE_NAME, null, values);
return (int) count;//插入的行数
} /**
* 删除指定id的记录
* @param id
* @return
*/
public int deleteRecord(int id){
SQLiteDatabase db = getWritableDatabase();
int count = db.delete(TABLE_NAME, ID+"=?", new String[]{""+id});
return count;//删除的行号
} public int updateRecord(StudentBean bean){
ContentValues values=new ContentValues();
values.put(NAME, bean.getName());
values.put(SEX, bean.getSex());
values.put(BIRTHDAY, bean.getBirthday());
values.put(HEIGHT, bean.getHeight());
SQLiteDatabase db = getWritableDatabase();
int count = db.update(TABLE_NAME, values, ID+"=?", new String[]{bean.getId()+""});//ID+"=?"是条件,new String[]{bean.getId()+""是填充占位符?
return count;
} public ArrayList<StudentBean> queryAll(){
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.query(TABLE_NAME, null, null, null, null, null, null);//全查询,没有条件
ArrayList<StudentBean> students=new ArrayList<StudentBean>();
while(c.moveToNext()){
int id=c.getInt(0);
String name=c.getString(c.getColumnIndex(NAME));
String sex=c.getString(c.getColumnIndex(SEX));
String birthday=c.getString(c.getColumnIndex(BIRTHDAY));
double height=c.getDouble(c.getColumnIndex(HEIGHT));
StudentBean bean=new StudentBean(id, name, sex, birthday, height);
students.add(bean);
}
return students;
} public StudentBean queryRecord(int id){
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.query(TABLE_NAME, null, ID+"=?", new String[]{""+id}, null,null,null);
if(c.moveToNext()){
String name=c.getString(c.getColumnIndex(NAME));
String sex=c.getString(c.getColumnIndex(SEX));
String birthday=c.getString(c.getColumnIndex(BIRTHDAY));
double height=c.getDouble(c.getColumnIndex(HEIGHT));
StudentBean bean=new StudentBean(id, name, sex, birthday, height);
return bean;
}
return null;
}
}

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <ListView
android:id="@+id/lvStudent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="5dp"/> </RelativeLayout>

item_student.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="wrap_content" > <TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="张飞"
android:layout_marginLeft="5dp"/>
<TextView
android:id="@+id/tvSex"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="男"
android:layout_marginLeft="5dp"/>
<TextView
android:id="@+id/tvBirthday"
android:layout_below="@id/tvName"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="1990-5-5"
android:layout_marginLeft="5dp"/>
<TextView
android:id="@+id/tvHeight"
android:layout_below="@id/tvSex"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="1.99米"
android:layout_marginLeft="5dp"/>
</RelativeLayout>

android 44 SQLiteOpenHelper的更多相关文章

  1. Xamarin.Android之SQLiteOpenHelper

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  2. Android笔记——SQLiteOpenHelper类

    public 抽象类 SQLiteOpenHelper 继承关系 Java.lang.Object android.database.sqlite.SQLiteOpenHelper 类概要 这是一个辅 ...

  3. Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  4. Android:SQLiteOpenHelper类(SQLlite数据库操作)详细解析

    前言 SQLite数据库操作在Android开发中非常常用 今天我将带大家全面了解关于SQLite数据库的操作(增.删.查.改) 目录 1. SQLite数据库介绍 SQLite是Android内置的 ...

  5. Android中SQLiteOpenHelper类的onUpgrade方法浅谈

    public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 这个方法在实现时需要重写. onUpg ...

  6. Android 数据库 SQLiteOpenHelper

    public class DbOpenHelper extends SQLiteOpenHelper { private static String name = "test.db" ...

  7. Xamarin.Android开发实践(十四)

    Xamarin.Android之ListView和Adapter 一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文 ...

  8. Android代码速查,写给新手的朋友们[转]

    原文地址:http://www.open-open.com/lib/view/open1397286499090.html 0 android 创建按钮 Button button = new But ...

  9. Xamarin.Android开发实践(十三)

    Xamarin.Android之SQLite.NET ORM 一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之C ...

随机推荐

  1. JavaScript学习心得(五)

    一时间 1970年1月1日是电脑常用的时间参考点,称为纪元(Epoch)或者UNIX时间戳(UNIX Epoch).JavaScript中的Date对象能够表示1970年1月1日子夜前后1亿天之内的任 ...

  2. Find your present (2) (位异或)

    Problem Description In the new year party, everybody will get a "special present".Now it's ...

  3. ASP.NET MVC轻教程 Step By Step 7——改进Write动作方法

    在上一节我们使用强类型视图改进Write视图获得更好的智能感知和代码重构,现在可以进一步的改进动作方法. Step 1. 数据模型绑定 在Save方法中我们使用Request来获取表单传送的值,其实可 ...

  4. Tomcat,Weblogic,WebSphere,JBoss四种服务器简单对比

    1,tomcat是Servlet容器,支持JSP.Servlet.JDBC等J2EE关键技术,常用于tomcat开发基于数据库.Servlet和JSP页面的Web应用.2,tomcat不是EJB容器, ...

  5. C++中四种类型转换方式

    类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比 ...

  6. Eclipse插件卸载

            以前搞过安卓,重装系统后,安卓损坏了,每次还会提示那个窗口很烦人.       使用Eclipse自带的卸载插件功能即可,Help->About Eclipse->Inst ...

  7. ios6,ios7,ios7.1下设置UISearchbar的背景色

    ios系统升级到7.1后,原来在7.0下显示正常的UISearchbar现在又出现问题了.究其原因,是由于UISearchbar的subview又做修改了. float version = [[[ U ...

  8. Android 进入另外一个窗体的两种方法

    方法一: Intent intent = new Intent(); intent.setClassName(this, "com.wuyou.twoactivity.OtherActivi ...

  9. SQL server 变量、运算符

    一.三个表的练习 表一:学生表 student学号:code int (主键)从1开始姓名:name varchar(50)性别:sex char(10)班级:banji char(10)语文教师编号 ...

  10. dede织梦跨频道调用指定栏目文章的解决方法

    很久没有写技术类的文章了,这次这个标题写的- 呃, 有一点儿纠结. 事情是这样的,刚刚回答了一个百度问答上的问题,这个问题的大体意思是,有一个图片栏目,内含3个子栏目,分别为图片栏目1.2和3,另有三 ...