欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 中SQLite技术实例详解

程序员文章站 2022-06-29 12:05:22
android和ios的数据库都是用sqlite来实现. 一,sqlite数据库简介: 轻量级:sqlite数据库是一个轻量级的数据库,适用于少量数据的curd; 文...

android和ios的数据库都是用sqlite来实现.

一,sqlite数据库简介:

轻量级:sqlite数据库是一个轻量级的数据库,适用于少量数据的curd;

文件本质:sqlite数据库支持大部分sql语法,允许使用sql语句操作数据库,其本质是一个文件,不需要安装启动。

数据读写:sqlite数据库打开只是一个文件的读写流。

二.简单的数据库语句知识

在android平台上,集成了一个嵌入式关系型数据库—sqlite,sqlite3支持null,integer,real(浮点数字),text(字符串文本)和blob(二进制对象)数据类型,实际上sqlite3也接受varchar(n),char(n),decimal(p,s)等数据类型,只不过在运算或保存时会转成对应的五种数据类型.

sqlite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。

今天我就用一个简单的列子来说明来实现sqlite。

实例代码:

import java.util.arraylist;
import java.util.iterator;

import com.hucc.huccgps.r;

import android.app.activity;
import android.app.dialog;
import android.content.context;
import android.content.intent;
import android.content.sharedpreferences;
import android.net.uri;
import android.os.bundle;
import android.util.log;
import android.view.layoutinflater;
import android.view.view;
import android.view.view.onclicklistener;
import android.view.viewgroup;
import android.view.window;
import android.widget.adapterview;
import android.widget.adapterview.onitemclicklistener;
import android.widget.baseadapter;
import android.widget.button;
import android.widget.edittext;
import android.widget.imageview;
import android.widget.listview;
import android.widget.textview;
import android.widget.toast;

public class mainactivity extends activity {

private static final string tag = "jgps/mainactivity";
private textview madd_white = null;
private listview mwhitelistview = null;
private context mcontext = null;

private int mposition;
private dbhelper mdbhelper = null;
private whitelistadapter madapter = null;
private arraylist<item> mwhitelistitem = new arraylist<item>();

@override
protected void oncreate(bundle savedinstancestate) {
  log.d("jgps/start", "oncreate");
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.relative_main);
  this.mdbhelper = new dbhelper(this);
  this.mcontext = this;
  this.mwhitelistitem = new arraylist<item>();
  this.mwhitelistview = (listview)findviewbyid(r.id.list_view);
  initdata();
  this.mwhitelistview.setonitemclicklistener(new onitemclicklistener() {

    @override
    public void onitemclick(adapterview<?> paramadapterview, view paramview, 
        int paramint, long paramlong) {
      log.d("jgps/mainactivity", ""+paramint);
      mainactivity.this.updatewhitelist((item)mainactivity.this.mwhitelistitem.get(paramint));
    }
  });
  if (this.madd_white == null) 
    return;

  madd_white.setonclicklistener(new onclicklistener() {

    @override
    public void onclick(view arg0) {
      mainactivity.this.addcontactlist();
    }
  });

  log.d("jgps/end", "oncreate");
}

private void initdata() {
  this.mwhitelistitem = this.mdbhelper.getrelativeslist();
  if (this.mwhitelistitem.size() != 3) {
    for (int i = 1; i < 4; i++) {
      log.d("jgps/mainactivity", "initdata,id=" + i);
      item localitem1 = new item();
      localitem1.setname("");
      localitem1.setnumber("");
      additemtolist(localitem1);
      updatesetting(i,"");        
    }
    this.mwhitelistitem = this.mdbhelper.getrelativeslist();
  }
  iterator localiterator = this.mwhitelistitem.iterator();
  while (localiterator.hasnext()) {
    item localitem2 = (item) localiterator.next();
    log.d("jgps/mainactivity", "initdata,id=" + localitem2.getid() + ",name = " + localitem2.getname() + ",number=" + localitem2.getnumber());
  }
  this.madapter = new whitelistadapter(this, this.mwhitelistitem);
  this.mwhitelistview.setadapter(madapter);
}

private void updatesetting(int id, string phonenum) {
  switch (id) {
  case 1:
    putsting("phone_num1",phonenum);
    break;
  case 2:
    putsting("phone_num2",phonenum);
    break;
  case 3:
    putsting("phone_num3",phonenum);
    break;
  default:
    log.d("jgps/mainactivity", "wrong relative number id");
  }    
}

private void putsting(string paramstring1, string paramstring2) {
  sharedpreferences.editor localeditor = getsharedpreferences("sos_config", 0).edit();
  localeditor.putstring(paramstring1, paramstring2);
  localeditor.apply();
}

protected void updatewhitelist(item paramitem) {
  final item item = paramitem;
  log.d("jgps/mainactivity", "updatewhitelist------" + item.getid());
  final dialog localdialog = new dialog(this, r.style.dialog);
  localdialog.show();
  window localwindow = localdialog.getwindow();
  localwindow.setcontentview(r.layout.dialog_editor);
  button localbutton1 = (button) localwindow.findviewbyid(r.id.btn_ok);
  button localbutton2 = (button) localwindow.findviewbyid(r.id.btn_cancel);
  final edittext phone = (edittext)localwindow.findviewbyid(r.id.phone);
  final edittext name = (edittext)localwindow.findviewbyid(r.id.name);
  name.settext(item.getname());
  phone.settext(item.getnumber());
  ((textview)localwindow.findviewbyid(r.id.title)).settext(r.string.edit_white);
  localbutton1.setonclicklistener(new onclicklistener() {

    @override
    public void onclick(view paramview) {
      if (phone.gettext().tostring().trim().length() == 0) {
        toast.maketext(mcontext, r.string.toast_tel, 2000).show();
        return;
      }
      if (name.gettext().tostring().trim().length() == 0) {
        toast.maketext(mcontext, r.string.name_null, 2000).show();
        return;
      }
      mainactivity.this.updatecontactindb(item.getid(), name.gettext().tostring(), phone.gettext().tostring());
      int id = integer.parseint(item.getid());
      updatesetting(id, phone.gettext().tostring());
      toast.maketext(mcontext, r.string.edit_success, 2000).show();
      localdialog.cancel();
    }
  });
  localbutton2.setonclicklistener(new onclicklistener() {

    @override
    public void onclick(view paramview) {
      localdialog.cancel();
    }
  });
}

protected void updatecontactindb(string paramstring1, string paramstring2, string paramstring3) {
  item localitem = new item();
  localitem.setid(paramstring1);
  localitem.setname(paramstring2);
  localitem.setnumber(paramstring3);
  updateitemlist(localitem);
}

private void updateitemlist(item paramitem) {
  item localitem2;
  iterator localiterator1 = this.mwhitelistitem.iterator();
  while (localiterator1.hasnext()) {
    localitem2 = (item) localiterator1.next();
    if (localitem2.getid().equals(paramitem.getid())) {
      localitem2.setname(paramitem.getname());
      localitem2.setnumber(paramitem.getnumber());
      this.mdbhelper.updaterelativesitem(paramitem);
    }
  }

  log.d("jgps/mainactivity", "updateiteminlist ---------");
  this.madapter = new whitelistadapter(this, this.mwhitelistitem);
  this.mwhitelistview.setadapter(madapter);
}

private void addcontactlist() {
  final dialog dialog = new dialog(this, r.style.dialog);
  dialog.show();
  window window = dialog.getwindow();
  window.setcontentview(r.layout.dialog_editor);

  button btn1 = (button)window.findviewbyid(r.id.btn_ok); 
  button btn2 = (button)window.findviewbyid(r.id.btn_cancel); 
  final edittext phone = (edittext)window.findviewbyid(r.id.phone);
  final edittext name = (edittext)window.findviewbyid(r.id.name);
  btn1.setonclicklistener(new onclicklistener() {

    @override
    public void onclick(view arg0) {
      if (phone.gettext().tostring().trim().length() == 0)
      {

       toast.maketext(mcontext, r.string.toast_tel, 2000).show();
       return;
      }
      if (name.gettext().tostring().trim().length() == 0)
      {
       toast.maketext(mcontext, r.string.name_null, 2000).show();
       return;
      }
      if (mainactivity.this.mwhitelistitem.size()>3) {
        string str = mainactivity.this.getresources().getstring(r.string.full1)+ " " + 3 + " " + mainactivity.this.getresources().getstring(r.string.full2);
        toast.maketext(mcontext, str, 2000).show();
        dialog.cancel();
        return;
      }
      mainactivity.this.addcontacttodb(name.gettext().tostring(),phone.gettext().tostring());
      dialog.cancel();
    }
  });
  btn2.setonclicklistener(new onclicklistener() {

    @override
    public void onclick(view arg0) {
      dialog.cancel();
    }
  });
}

protected void deletecontactfromdb(string paramstring) {
  updatecontactindb(paramstring, "", "");
  log.d("jgps/mainactivity", "===additemtolist = "+paramstring);
  int id = integer.parseint(paramstring);
  updatesetting(id, paramstring);
  toast.maketext(this.mcontext, r.string.delete_success, 2000).show();
}

@override
protected void onstart() {
  log.d("jgps/mainactivity", "onstart()");
  super.onstart();
}

protected void startcontactintent(int paramint) {
  log.d("jgps/mainactivity", "onclick " + paramint);
  this.mposition = paramint;
  intent localintent = new intent("android.intent.action.pick");
  localintent.settype("vnd.android.cursor.dir/phone_v2");
  startactivityforresult(localintent, 100);
}

protected void addcontacttodb(string paramstring1, string paramstring2) {
  iterator localiterator = this.mwhitelistitem.iterator();

  while (localiterator.hasnext()) {
    if(((item)localiterator.next()).getnumber().equals(paramstring2)){
       toast.maketext(mcontext, r.string.replace, 2000).show();
       return;
     } 
  }
  item localitem = new item();
  localitem.setname(paramstring1);
  localitem.setnumber(paramstring2);
  additemtolist(localitem);
  toast.maketext(mcontext, r.string.replace, 2000).show();
}

private void additemtolist(item localitem) {
  log.d("jgps/mainactivity", "additemtolist,name = " + localitem.getname() + ",number=" + localitem.getnumber());
  this.mdbhelper.addrelativesitem(localitem);
  this.mwhitelistitem = this.mdbhelper.getrelativeslist();
  this.madapter = new whitelistadapter(this, this.mwhitelistitem);
  this.mwhitelistview.setadapter(madapter);
}

public void startactivityforresult(intent paramintent, int paramint)
{
 super.startactivityforresult(paramintent, paramint);
}

private class whitelistadapter extends baseadapter{

  private context context;
  private layoutinflater minflater;
  private arraylist<item> listitem;

  public whitelistadapter(context context1,
      arraylist<item> whitelistitem) {
    this.context = context1;
    this.listitem = whitelistitem;
    this.minflater = layoutinflater.from(context);
  }

  public int getcount()
  {
    if ((this.listitem !=null) && (this.listitem.size() > 0)) {
      return 3;
    }
   return 0;
  }

  public object getitem(int paramint)
  {
   if ((this.listitem != null) && (this.listitem.size() > 0))
    return this.listitem.get(paramint);
   return null;
  }

  public long getitemid(int paramint)
  {
   return 0l;
  }

  @override
  public view getview(int paramint, view paramview, viewgroup paramviewgroup) {
    log.d("jgps/mainactivity", "getview,position=" + paramint + ",name=" + ((item)this.listitem.get(paramint)).getname() + ",num=" + ((item)this.listitem.get(paramint)).getnumber());
    if (paramview == null) {
      final viewholder localviewholder = new viewholder();
      paramview = this.minflater.inflate(r.layout.relative_list_item, null);
      localviewholder.ivcall = (imageview)paramview.findviewbyid(r.id.imageview_call);
      localviewholder.ivdelete = (imageview)paramview.findviewbyid(r.id.imageview_delete);
      localviewholder.ivselect = (imageview)paramview.findviewbyid(r.id.recipients_picker);
      localviewholder.txtview_name = (textview)paramview.findviewbyid(r.id.txtview_name);
      localviewholder.txtview_tel = (textview)paramview.findviewbyid(r.id.txtview_number);

      paramview.settag(localviewholder);
      localviewholder.position = paramint;
      localviewholder.ivselect.settag(localviewholder);

      if ((this.listitem.get(paramint)== null)|| 
          (((item)this.listitem.get(paramint)).getnumber() == null) 
          || (((item)this.listitem.get(paramint)).getnumber().equals(""))) {
        localviewholder.ivcall.setvisibility(view.gone);
        localviewholder.ivselect.setvisibility(view.visible);
        string str1 = mainactivity.this.getstring(r.string.family_string);
        string str2 = str1 + (paramint + 1) + ":";
        localviewholder.txtview_name.settext(str2);
        localviewholder.txtview_tel.settext(r.string.click_to_add);
      }else {
        localviewholder.ivcall.setvisibility(view.visible);
        localviewholder.ivselect.setvisibility(view.gone);
        localviewholder.txtview_name.settext(((item)this.listitem.get(paramint)).getname());
        localviewholder.txtview_tel.settext(((item)this.listitem.get(paramint)).getnumber());
      }

      localviewholder.ivselect.setonclicklistener(new onclicklistener() {

        @override
        public void onclick(view paramview) {
          mainactivity.whitelistadapter.viewholder localviewholder = (mainactivity.whitelistadapter.viewholder)paramview.gettag();
          log.d("jgps/mainactivity", "getview,mposition=" + mainactivity.this.mposition);

          mainactivity.this.startcontactintent(localviewholder.position);
        }
      });

      if ((!(((item)this.listitem.get(paramint)).getname().equals("")))
          || (!(((item)this.listitem.get(paramint)).getnumber().equals(""))))
      {
        localviewholder.ivdelete.setvisibility(view.visible);
      }else {
      localviewholder.ivdelete.setvisibility(view.gone);
      }

      localviewholder.ivcall.setonclicklistener(new onclicklistener() {

        @override
        public void onclick(view paramview) {
          intent localintent = new intent("android.intent.action.call",
              uri.parse("tel:" + ((item)mainactivity.whitelistadapter.this.listitem.get(localviewholder.position)).getnumber()));
          mainactivity.whitelistadapter.this.context.startactivity(localintent);
        }
      });

      localviewholder.ivdelete.setonclicklistener(new onclicklistener() {

        @override
        public void onclick(view paramview) {
         if(paramview.getid() != r.id.imageview_delete)
            return;
         final string str = ((item)mainactivity.whitelistadapter.this.listitem.get(localviewholder.position)).getid();     
         log.d("jgps/mainactivity", "delete item onclick,strid=" + str + ",position=" + localviewholder.position);

         final dialog localdialog = new dialog(mainactivity.whitelistadapter.this.context, r.style.dialog);
         localdialog.show();
         window localwindow = localdialog.getwindow();
         localwindow.setcontentview(r.layout.dialog_delete);
         ((textview)localwindow.findviewbyid(r.id.txtview_delete)).settext(mainactivity.whitelistadapter.this.context.getresources().getstring(r.string.delete_one) 
             + "'" + ((item)mainactivity.whitelistadapter.this.listitem.get(localviewholder.position)).getname()
             + "'" + mainactivity.whitelistadapter.this.context.getresources().getstring(r.string.delete_two));
         button localbutton1 = (button) localwindow.findviewbyid(r.id.btn_ok);
         button localbutton2 = (button) localwindow.findviewbyid(r.id.btn_cancel);
         localbutton1.setonclicklistener(new onclicklistener() {

          @override
          public void onclick(view paramview) {
            mainactivity.this.deletecontactfromdb(str);
            localdialog.cancel();
          }
        });
         localbutton2.setonclicklistener(new onclicklistener() {

          @override
          public void onclick(view paramview) {
            localdialog.cancel();
          }
        });
        }
      });

    }else {

    }

    return paramview;
  }

  public class viewholder{
    public imageview ivcall;
     public imageview ivdelete;
     public imageview ivselect;
     public int position;
     public textview txtview_name;
     public textview txtview_tel;
  }
}
}


import java.util.arraylist;

import android.content.contentvalues;
import android.content.context;
import android.database.cursor;
import android.database.sqlite.sqlitedatabase;
import android.database.sqlite.sqliteopenhelper;
import android.util.log;

public class dbhelper extends sqliteopenhelper {

public static final string table_relatives_content = "relativescontent";
public static final int version = 1; //版本
public static final string dbname = "sosdb"; //数据库的名字
public static context mcontext = null;
public sqlitedatabase db = null;

public dbhelper(context paramcontext) {
  super(paramcontext, "sosdb", null, 1);
  mcontext = paramcontext;
}

// 创建数据库表
@override
public void oncreate(sqlitedatabase paramsqlitedatabase) {
  paramsqlitedatabase.execsql("create table relativescontent(id integer primary key autoincrement,name text , number text)");
  closedatabase();
}

private void closedatabase() {
  if (this.db == null) 
    return;
  this.db.close();
}

@override
public void onupgrade(sqlitedatabase paramsqlitedatabase, int paramint1, int paramint2) {
  oncreate(paramsqlitedatabase);
}

//查询方法
public arraylist<item> getrelativeslist() {
  string idf = null;
  string namef = null;
  string numf = null;
  arraylist localarraylist = new arraylist();
  opendatabase();
  cursor localcursor = this.db.query("relativescontent", null, null, null, null, null, null);
  if(localcursor == null)
    return localarraylist;
  while (localcursor.movetonext()) {
    item localitem = new item();
    idf = localcursor.getstring(localcursor.getcolumnindex("id"));
    namef = localcursor.getstring(localcursor.getcolumnindex("name"));
    numf = localcursor.getstring(localcursor.getcolumnindex("number"));
    localitem.setid(idf);
    log.d("jgps/mainactivity", "dbid=" + idf);
    if ((namef == null) || ("".equals(namef))) {
      localitem.setname("");
    }else {
      localitem.setname(namef);
    }
    if ((numf == null) || ("".equals(numf))) {
      localitem.setnumber("");
    }else {
      localitem.setnumber(numf);
    }
    localarraylist.add(localitem);
  }    
  return localarraylist;
}

//写入数据
private void opendatabase() {
  this.db = super.getwritabledatabase();
}

//添加数据
public boolean addrelativesitem(item localitem) {
  opendatabase();
  contentvalues localcontentvalues = new contentvalues();
  localcontentvalues.put("name", localitem.getname());
  localcontentvalues.put("number", localitem.getnumber());
  long l = this.db.insert("relativescontent", null, localcontentvalues);
  closedatabase();
  return (1<=0l);
}

//更新数据
public boolean updaterelativesitem(item paramitem) {
  opendatabase();
  contentvalues localcontentvalues = new contentvalues();
  localcontentvalues.put("name", paramitem.getname());
  localcontentvalues.put("number", paramitem.getnumber());
  sqlitedatabase localsqlitedatabase = this.db;
  string[] arrayofstring = new string[1];
  arrayofstring[0] = paramitem.getid();
  long l = localsqlitedatabase.update("relativescontent", localcontentvalues, "id=?", arrayofstring);
  closedatabase();
  return (1 <= 0l);
}

}


import java.io.serializable;

public class item implements serializable{

private string _id;
private string name;
private string number;

public item() {
  // todo auto-generated constructor stub
}

public void item(string paramstring1, string paramstring2, string paramstring3)
 {
  this._id = paramstring1;
  this.name = paramstring2;
  this.number = paramstring3;
 }

public string getid() {
  return _id;
}

public void setid(string paramstring)
 {
  this._id = paramstring;
 }

public string getname() {
  return name;
}

public void setname(string paramstring)
 {
  this.name = paramstring;
 }

public string getnumber() {
  return number;
}

public void setnumber(string paramstring)
 {
  this.number = paramstring;
 }  
 }

这是基本的数据程序。

xml

relative_main

<linearlayout android:orientation="vertical" 
android:background="@color/background_color" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<relativelayout android:background="@drawable/title_bar" 
  android:layout_width="fill_parent" 
  android:layout_height="50.0sp">
  <textview 
    android:textsize="@dimen/title_size" 
    android:textstyle="bold" 
    android:textcolor="@color/title_color" 
    android:gravity="center" 
    android:layout_gravity="center" 
    android:layout_width="wrap_content" 
    android:layout_height="50.0sp" 
    android:text="@string/relative_name" 
    android:layout_centerinparent="true" />
</relativelayout>
<relativelayout android:id="@+id/white_content" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content">
  <listview android:id="@+id/list_view"
     android:scrollbars="none" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scrollingcache="true" 
     android:cachecolorhint="#00000000" 
     android:divider="@null" 
     android:fastscrollenabled="false" />
</relativelayout>
</linearlayout>
dialog_editor

<?xml version="1.0" encoding="utf-8"?>
<linearlayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center" 
android:orientation="vertical" 
android:id="@+id/linearlayout_dialog" 
android:layout_width="300.0dip" 
android:layout_height="wrap_content">
   <textview 
  android:textsize="20.0sp" 
  android:textcolor="#ffffffff" 
  android:gravity="center" 
  android:id="@+id/title" 
  android:background="@drawable/popup_topbg" 
  android:layout_width="fill_parent" 
  android:layout_height="60.0dip" 
  android:text="@string/add_white" />
<linearlayout 
  android:orientation="vertical" 
  android:background="@drawable/simple_dialog_list_item_bg" 
  android:paddingleft="5.0dip" android:paddingtop="5.0dip" 
  android:paddingright="5.0dip" android:layout_width="fill_parent" 
  android:layout_height="wrap_content">


      <linearlayout android:orientation="horizontal" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:layout_marginleft="8.0dip" 
    android:layout_margintop="6.0dip" android:layout_marginright="6.0dip" 
    android:layout_marginbottom="2.0dip">
    <textview android:textsize="16.0sp" android:textcolor="#ff000000" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:text="@string/name" />
    <edittext android:gravity="left|center" 
      android:id="@+id/name" 
      android:background="@drawable/text_input" 
      android:layout_width="210.0dip" android:layout_height="wrap_content" 
      android:layout_marginleft="8.0dip" android:hint="@string/name_hint" 
      android:singleline="true" />
  </linearlayout>
  <linearlayout android:layout_gravity="center" android:orientation="horizontal" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:layout_marginleft="8.0dip" android:layout_marginright="6.0dip">
    <textview android:textsize="16.0sp" android:textcolor="#ff000000" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:text="@string/address" />
    <edittext android:gravity="left|center" android:id="@+id/phone" 
      android:background="@drawable/text_input" 
      android:layout_width="210.0dip" 
      android:layout_height="wrap_content" android:layout_marginleft="8.0dip" 
      android:hint="@string/address_hint" android:singleline="true" 
      android:inputtype="phone" />
  </linearlayout>

  <include layout="@layout/divider" />
  <linearlayout android:orientation="horizontal" android:layout_width="fill_parent" 
    android:layout_height="54.0dip">
    <button android:textsize="20.0sp" android:id="@+id/btn_ok" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" android:text="@string/ok" 
      android:layout_weight="5.0" style="@style/dialog_item" />
    <view android:background="#ffbcc2c5" android:layout_width="2.0px" 
      android:layout_height="fill_parent" />
    <button android:textsize="20.0sp" android:id="@+id/btn_cancel" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:text="@string/cancel" android:layout_weight="5.0" 
      style="@style/dialog_item" />
  </linearlayout>
</linearlayout>
 </linearlayout>

relative_list_item

<linearlayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_vertical" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="40.0dip" 
style="@style/list_item_background">
<linearlayout 
  android:gravity="center_vertical" 
  android:orientation="horizontal" 
  android:id="@+id/ll_line1" 
  android:paddingleft="5.0dip" 
  android:paddingright="5.0dip" 
  android:layout_width="0.0dip" 
  android:layout_height="wrap_content" 
  android:layout_weight="1.0">
  <textview 
    android:textsize="@dimen/list_font_size_0" 
    android:textstyle="bold" 
    android:textcolor="@color/list_item_text" 
    android:ellipsize="end" 
    android:gravity="center" 
    android:id="@+id/txtview_name" 
    android:paddingbottom="3.0dip" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:maxwidth="80.0dip" 
    android:singleline="true" />
  <textview 
    android:textsize="@dimen/list_font_size_1" 
    android:textstyle="bold" 
    android:textcolor="@color/list_item_text" 
    android:ellipsize="end" android:gravity="center" 
    android:id="@+id/txtview_number" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:layout_marginleft="10.0dip" 
    android:singleline="true" />
</linearlayout>
<imageview 
  android:layout_gravity="center_vertical" 
  android:id="@+id/imageview_call" 
  android:background="@drawable/btn_dial_action" 
  android:paddingleft="8.0dip" 
  android:paddingtop="8.0dip" 
  android:paddingright="8.0dip" 
  android:paddingbottom="8.0dip" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:src="@drawable/call_phone" />"

 <imageview android:layout_gravity="center_vertical" 
android:id="@+id/recipients_picker" 
android:background="@drawable/add_contact_selector" 
android:layout_width="65.0dip" android:layout_height="65.0dip" 
android:layout_marginleft="2.0dip" android:layout_marginright="2.0dip" 
android:scaletype="fitxy" />
<view android:id="@+id/imageview_divider" android:background="#2b2b2b2b" 
  android:layout_width="2.0dip" android:layout_height="40.0dip" />
<imageview android:layout_gravity="right|center" 
  android:id="@+id/imageview_delete" android:paddingleft="8.0dip" 
  android:paddingtop="8.0dip" android:paddingright="8.0dip" 
  android:paddingbottom="8.0dip" android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:src="@drawable/del_cross" />
    </linearlayout>

dialog_delete

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center" 
android:orientation="vertical" 
android:id="@+id/linearlayout_dialog" 
android:layout_width="300.0dip" android:layout_height="wrap_content">
<textview android:textsize="20.0sp" android:textcolor="#ffffffff" 
  android:gravity="center" android:background="@drawable/popup_topbg" 
  android:layout_width="fill_parent" android:layout_height="60.0dip" 
  android:text="@string/tips" />
<linearlayout android:orientation="vertical" 
  android:background="@drawable/simple_dialog_list_item_bg" 
  android:paddingleft="5.0dip" 
  android:paddingtop="12.0dip" android:paddingright="5.0dip" 
  android:layout_width="fill_parent" android:layout_height="wrap_content">
  <textview android:textsize="20.0sp" android:textcolor="#ff000000" 
    android:id="@+id/txtview_delete" android:paddingbottom="12.0dip" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:layout_marginleft="8.0dip" android:layout_marginright="6.0dip" />
  <include layout="@layout/divider" />
  <linearlayout android:orientation="horizontal" android:layout_width="fill_parent" 
    android:layout_height="54.0dip">
    <button android:textsize="20.0sp" android:id="@+id/btn_ok" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:text="@string/dialog_yes" android:layout_weight="5.0" 
      style="@style/dialog_item" />
    <view android:background="#ffbcc2c5" android:layout_width="2.0px" 
      android:layout_height="fill_parent" />
    <button android:textsize="20.0sp" android:id="@+id/btn_cancel" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:text="@string/dialog_no" android:layout_weight="5.0" 
      style="@style/dialog_item" />
  </linearlayout>
</linearlayout>
</linearlayout>

这是一个简单的demo,我这里就不详细说明数据库的细节了,对于已经很熟悉数据库的,可以查看android官网有说明的,

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!