1.DBManager.java 数据库的初始化,数据库的增删查改方法实现
2.Entity.java 实体类
3.MainActivity.java 显示界面的类
4.MyBaseAdapter 适配器封装
/**
* 1.实现增,删,查全部,改(根据id修改),游标获取方法
*
* @author Justice 2014 10 15
*
*/
public class DBManager extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "shop_address.db";// 数据库名字
private static final int VERSION = 1;// 数据库版本
private static final String TABLE = "t_shop_address";// 数据库表名
private static final String ID = "_id";
private static final String NAME = "name";
private static final String ADDRESS = "address";
private SQLiteDatabase db;
private DBManager dbManager;//1.创建数据库管理全局变量
public DBManager(Context context) {//1.1构造函数初始化,数据库表名,数据库版本
super(context, DATABASE_NAME, null, VERSION);
Log.i("DBHelper", "构造函数执行");
}
public void onCreate(SQLiteDatabase db) {//1.2 创建数据库表
String sql = "create table t_shop_address(_id integer primary key autoincrement ,name text,address text,ischecked boolean)";
db.execSQL(sql);
Log.i("DBHelper", "onCreate执行");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//1.3 创建数据库表
db.execSQL("drop table if exists t_shop_address");
onCreate(db);
Log.i("DBHelper", "onUpgrade执行");
}
public int add(Context context, ContentValues values) {// 增加
dbManager = new DBManager(context);
db = dbManager.getWritableDatabase();
long addCount = db.insert(TABLE, null, values);
db.close();
Log.i("DBManager", "add增加了" + addCount);
return (int) addCount;
}
public int delete(Context context, int id) {// 根据id删除
dbManager = new DBManager(context);
db = dbManager.getWritableDatabase();
int deleteCount = db.delete(TABLE, ID + "=?", new String[] { id + "" });// 1.表名2.根据条件参数3.条件值
db.close();
Log.i("DBManager", "delete删除了" + deleteCount);
return deleteCount;
}
public List<Entity> findAll(Context context) {// 查询所有
List<Entity> data = null;
dbManager = new DBManager(context);
db = dbManager.getWritableDatabase();
Cursor cursor = db.query(TABLE, null, null, null, null, null, null);
if (cursor.getColumnCount() > 0) {// 当有数据时
data = new ArrayList<Entity>();
while (cursor.moveToNext()) {
Entity entity = new Entity();
entity.setId(cursor.getInt(cursor.getColumnIndex(ID)));
entity.setName(cursor.getString(cursor.getColumnIndex(NAME)));
entity.setAddress(cursor.getString(cursor.getColumnIndex(ADDRESS)));
data.add(entity);
}
}
db.close();
Log.i("DBManager", "findAll查询所有");
return data;
}
public List<Entity> findAllByName(Context context, String name) {// 查询所有根据名字
List<Entity> data = null;
dbManager = new DBManager(context);
db = dbManager.getWritableDatabase();
Cursor cursor = db.query(TABLE, null, NAME + " like '%" + name + "%'", null, null, null, null);
if (cursor.getColumnCount() > 0) {// 当有数据时
data = new ArrayList<Entity>();
while (cursor.moveToNext()) {
Entity entity = new Entity();
entity.setId(cursor.getInt(cursor.getColumnIndex(ID)));
entity.setName(cursor.getString(cursor.getColumnIndex(NAME)));
entity.setAddress(cursor.getString(cursor.getColumnIndex(ADDRESS)));
data.add(entity);
}
}
db.close();
Log.i("DBManager", "findAllByName查询所有" + "");
return data;
}
public List<Entity> findAllByID(Context context, int id) {// 查询所有根据名字
List<Entity> data = null;
dbManager = new DBManager(context);
db = dbManager.getWritableDatabase();
Cursor cursor = db.query(TABLE, null, ID + "=?", new String[] { id + "" }, null, null, null);
if (cursor.getColumnCount() > 0) {// 当有数据时
data = new ArrayList<Entity>();
while (cursor.moveToNext()) {
Entity entity = new Entity();
entity.setId(cursor.getInt(cursor.getColumnIndex(ID)));
entity.setName(cursor.getString(cursor.getColumnIndex(NAME)));
entity.setAddress(cursor.getString(cursor.getColumnIndex(ADDRESS)));
data.add(entity);
}
}
db.close();
Log.i("DBManager", "findAllByName查询所有" + "");
return data;
}
public int update() {
return 0;
}
public Cursor findCursor(Context context) {// 游标
dbManager = new DBManager(context);
db = dbManager.getWritableDatabase();
Cursor cursor = db.query(TABLE, null, null, null, null, null, null);
Log.i("DBManager", "Cursor游标");
return cursor;
}
}
public class Entity {
private int id;
private String name;
private String address;
@Override
public String toString() {
return "Entity [id=" + id + ", name=" + name + ", address=" + address + "]";
}
public Entity(String name, String address) {
this.name = name;
this.address = address;
}
public int getId() {
return id;
}
public Entity() {
super();
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
public class MainActivity extends Activity implements OnClickListener {
private Context context;// 上下文
private static final String NAME = "name";// 字段名
private static final String ID = "_id";
private static final String ADDRESS = "address";
private EditText name_edt;
private EditText address_edt;
private EditText find_edt;
private Button add_btn;// 增删查改
private Button delete_btn;
private Button find_btn;
private Button update_btn;
private DBManager dbManager;// 数据库管理类
private ListView listview;// listview
private List<Entity> findList;// 数据集合
private MyBaseAdapter adapter;// 适配器
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 设置吧显示标题栏--需要在创建视图之前设置
setContentView(R.layout.activity_main);
context = this;// 上下文赋值
dbManager = new DBManager(context);// 1.创建数据库管理类
InitView();// 1.1初始化View
ListViewInit();// 1.2初始化数据显示
listview.setOnCreateContextMenuListener(this);// 1.3设置上下文监听
// registerForContextMenu(listview);或者这个也行
}
private void InitView() {// 1.1初始化View
name_edt = (EditText) this.findViewById(R.id.receiver);
address_edt = (EditText) this.findViewById(R.id.address);
find_edt = (EditText) this.findViewById(R.id.find);
add_btn = (Button) this.findViewById(R.id.add_btn);
delete_btn = (Button) this.findViewById(R.id.delete_btn);
find_btn = (Button) this.findViewById(R.id.find_btn);
update_btn = (Button) this.findViewById(R.id.update_btn);
add_btn.setOnClickListener(this);
delete_btn.setOnClickListener(this);
find_btn.setOnClickListener(this);
update_btn.setOnClickListener(this);
listview = (ListView) this.findViewById(R.id.listview);
}
private void ListViewInit() {// 1.2初始化数据
findList = dbManager.findAll(context);
adapter = new MyBaseAdapter(context, findList) {
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(context, R.layout.item_listview, null);
TextView name_txt = (TextView) view.findViewById(R.id.name_txt);
TextView address_txt = (TextView) view.findViewById(R.id.address_txt);
TextView id_txt = (TextView) view.findViewById(R.id.id_txt);
Entity entity = findList.get(position);
id_txt.setText(entity.getId() + "");
name_txt.setText(entity.getName());
address_txt.setText(entity.getAddress());
return view;
}
};
listview.setAdapter(adapter);
}
public boolean onContextItemSelected(MenuItem item) {// 1.3上下文菜单选项
switch (item.getItemId()) {
case 0:
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
Entity entity = findList.get(info.position);
dbManager.delete(context, entity.getId());
ListViewInit();
break;
case 1:
Toast.makeText(context, "修改", 0).show();
break;
}
return super.onContextItemSelected(item);
}
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {// 1.3
// 上下文菜单
super.onCreateContextMenu(menu, v, menuInfo);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
Entity entity = findList.get(info.position);
menu.add(Menu.NONE, 0, 1, "删除");
menu.setHeaderIcon(R.drawable.ic_launcher);
menu.setHeaderTitle(entity.getName());
menu.add(Menu.NONE, 1, 2, "修改");
}
public void onClick(View v) {// 1.4按钮点击事件
switch (v.getId()) {
case R.id.add_btn:
ContentValues values = new ContentValues();
String name = name_edt.getText().toString().trim();// 获取输入框里面的信息增加数据库
String address = address_edt.getText().toString().trim();
values.put(NAME, name);
values.put(ADDRESS, address);
dbManager.add(context, values);// 增加一条
Toast.makeText(context, "保存成功", 0).show();
break;
case R.id.delete_btn:
String id = find_edt.getText().toString().trim();
if (!id.equals("")) {
dbManager.delete(context, Integer.parseInt(id));// 根据输入框输入Id删除数据库
}
ListViewInit();
Toast.makeText(context, "请输入要删除的ID", 0).show();
case R.id.find_btn:
String name2 = find_edt.getText().toString().trim();
dbManager.findAllByName(context, name2);
break;
}
}
}
public abstract class MyBaseAdapter<T, Q> extends BaseAdapter {
public Context context;
public List<T> list;//
public Q view; //GridView,CustomListView
public MyBaseAdapter(Context context, List<T> list, Q view) {
this.context = context;
this.list = list;
this.view = view;
}
public MyBaseAdapter(Context context, List<T> list) {
this.context = context;
this.list = list;
}
@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;
}
}