http://blog.youkuaiyun.com/codeeer/article/details/30237597转载过来,下次方便看
来解释一下直接套用的案例吧
案例图片
类分别
/**
* SQLiteOpenHelper的抽象类,必须继承它才能使用,它是通过对数据库版本进行管理来实现前面提出的需求
* @author wen
*
*/
public class OpenHelper extends SQLiteOpenHelper {
public OpenHelper(Context context) {
super(context, "db.student", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table student (_id integer primary key autoincrement,name varchar(2250))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public class SqlDao {
private OpenHelper helper;
public SqlDao(Context context) {
helper=new OpenHelper(context);
}
/**
* 添加
* @param stu
* @return
*/
public boolean add(Student stu){
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", stu.getName().toString());
long insert = db.insert("student", null, values);
db.close();
if(insert !=-1){
return true;
}else{
return false;
}
}
/**
* 删除
* @param name
*/
public void delete(String name){
SQLiteDatabase db = helper.getWritableDatabase();
// db.execSQL("delete student where name =?",new String[]{name});
db.delete("student", "name=?", new String[]{name});
db.close();
}
/**
*查找学生姓名
* @param stu
* @return
*/
public Student findName(Student stu2 ){
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from student where name=?", new String[]{stu2.getName()});
Student s = new Student();
while(cursor.moveToNext()){
// String name = cursor.getString(1);
s.setName(stu2.getName());
}
cursor.close();
db.close();
return s;
}
//查询所有学生
public List<Student> findAll(){
SQLiteDatabase db = helper.getReadableDatabase();
List<Student> list =new ArrayList<Student>();
Cursor cursor = db.query("student", null, null, null, null, null, null);
while(cursor.moveToNext()){
//创建学生对象
Student s = new Student();
String name = cursor.getString(1);
//添加到学生bean里面
s.setName(name);
list.add(s);
}
db.close();
cursor.close();
return list;
}
}
public class Student {
private String name;
public Student(){
}
public Student(String name){
this.name = name;
}
public Student(String name, String sex) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class MainPage extends Activity {
private EditText et_name;
private Button bt_add;
private String name;
private RadioGroup rg_group;
private TextView tv_showsex;
private String showsex;
private SqlDao dao;
private Student stu;
private Student stu2;
private List<Student> list;
private MyAdapter adapter;
private ListView listView1;
private PopupWindow pw;
private TextView delete;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mainpage);
initView();
initDate();
}
//初始化视图
private void initView() {
et_name=(EditText) findViewById(R.id.et_name);
bt_add=(Button) findViewById(R.id.bt_add);
listView1=(ListView) findViewById(R.id.listView1);
}
//初始化数据
private void initDate() {
dao=new SqlDao(MainPage.this);
list=dao.findAll();
adapter=new MyAdapter();
listView1.setAdapter(adapter);
bt_add.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
name = et_name.getText().toString().trim();
stu=new Student(name);
if(TextUtils.isEmpty(name)){
Toast.makeText(MainPage.this, "添加信息不能为空", Toast.LENGTH_LONG).show();
}else{
stu2=new Student(name);
Student findName = dao.findName(stu2);
if(name.equals(findName.getName())){
Toast.makeText(MainPage.this, "添加的姓名不能一样!", Toast.LENGTH_SHORT).show();
}else{
boolean add = dao.add(stu);
if(add){
list=dao.findAll();
adapter.notifyDataSetInvalidated();//刷新列表
Toast.makeText(MainPage.this, "添加成功", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainPage.this, "添加失败", Toast.LENGTH_SHORT).show();
}
}
}
}
});
/**
* listview的条目点击事件
*/
listView1.setOnItemClickListener(new OnItemClickListener() {
private String na;
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
na = list.get(position).getName();
View v = View.inflate(MainPage.this, R.layout.adapter_popu_window, null);
if (pw != null) {
pw.dismiss();//让弹出的PopupWindow消失
pw = null;
}
pw = new PopupWindow(v, -2, -2);
int [] location=new int[2];
view.getLocationInWindow(location);
pw.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
pw.showAtLocation(parent,Gravity.RIGHT+ Gravity.TOP, 20,location[1]-5 );//设置显示的位置
ScaleAnimation animation = new ScaleAnimation(0.3f, 1f, 0.3f, 1f, Animation.RELATIVE_TO_SELF,
Animation.RELATIVE_TO_SELF);//弹出的动画
animation.setDuration(400);//设置动画时间
v.startAnimation(animation);//开启动画
delete = (TextView)v.findViewById(R.id.tv_delete);
/**
* 删除每一个item上的数据
*/
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dao.delete(na);
list.remove(position);//移除item的条目
list=dao.findAll();//调用查询所有重新再查找一遍
adapter.notifyDataSetChanged();//更新适配器
}
});
}
});
/**
* listview的滑动监听
* 当鼠标上下滑动的时候让PopupWindow消失
*/
listView1.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if(pw!=null){
pw.dismiss();
pw=null;
}
}
});
}
//按钮组的点击事件
class MyAdapter extends BaseAdapter{
private View view;
private String name2;
@SuppressLint("ViewHolder") @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null ;//设置静态类使其初始化
if(convertView==null){
holder = new ViewHolder();//创建holder对象
view = View.inflate(MainPage.this, R.layout.item,null );
holder.tv_name = (TextView) view.findViewById(R.id.tv_n);
view.setTag(holder);//用来保存一些数据结构。
}else{
view=convertView;//复用历史缓存
holder=(ViewHolder) view.getTag();
}
name2 = list.get(position).getName();
holder.tv_name.setText(name2);
return view;
}
@Override
public int getCount() {
return list.size(); //返回list集合中的数据个数
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
//ViewHolder静态类
static class ViewHolder{
TextView tv_name;
}
}