GreenDao的简单使用说明(二)单表的增,删,改,查

leewinq 9年前

来自: http://blog.csdn.net//chenguang79/article/details/50441343


        通过上一篇文章,我们已经把GreenDao框架架起来了,而且三个基础操作类和Users的用户类也建立起来了,哪么下面我们就来实现一下,对于这个单表的增,删,改,查功能.

        这里说明一下,因为是做一个简单的例子,所以这里我对数据库的操作,没有做异步处理.

       第一步,我们要先来写一个类BaseApplication.java,此类是用来取得GreenDao中的DaoMaster和DaoSession的,先看代码.

      

package com.example.cg.greendaolearn.db;    import android.app.Application;  import android.content.Context;    import com.example.cg.greendaolearn.THDevOpenHelper;  import com.guangda.dao.DaoMaster;  import com.guangda.dao.DaoSession;    /**   * 官方推荐将取得DaoMaster对象的方法放到Application层这样避免多次创建生成Session对象。   * Created by cg on 2015/12/29.   */  public class BaseApplication extends Application {      private static BaseApplication mInstance;      private static DaoMaster daoMaster;      private static DaoSession daoSession;        @Override      public void onCreate() {          super.onCreate();          if(mInstance == null)              mInstance = this;      }        /**       * 取得DaoMaster       *       * @param context        上下文       * @return               DaoMaster       */      public static DaoMaster getDaoMaster(Context context) {          if (daoMaster == null) {              DaoMaster.OpenHelper helper = new THDevOpenHelper(context,"myDb",null);              daoMaster = new DaoMaster(helper.getWritableDatabase());          }          return daoMaster;      }        /**       * 取得DaoSession       *       * @param context        上下文       * @return               DaoSession       */      public static DaoSession getDaoSession(Context context) {          if (daoSession == null) {              if (daoMaster == null) {                  daoMaster = getDaoMaster(context);              }              daoSession = daoMaster.newSession();          }          return daoSession;      }  }
    通过代码上的注释,我们也知道了,只所以要继承自application,主要就是为了避免多次创建生成Session对象,提高性能.

   第二步,建立一个操作类,把增,删,改,查的方法,全写进去.方便调用.代码如下

   DbService.java

  

package com.example.cg.greendaolearn.db;    import android.content.Context;  import android.text.TextUtils;  import android.util.Log;    import com.guangda.dao.DaoSession;  import com.guangda.dao.UsersDao;    import java.util.List;    import greendao.Users;    /**   * 用户操作类   * Created by cg on 2015/12/29.   */  public class DbService {      private static final String TAG = DbService.class.getSimpleName();      private static DbService instance;      private static Context appContext;      private DaoSession mDaoSession;      private UsersDao userDao;          private DbService() {      }        /**       * 采用单例模式       * @param context     上下文       * @return            dbservice       */      public static DbService getInstance(Context context) {          if (instance == null) {              instance = new DbService();              if (appContext == null){                  appContext = context.getApplicationContext();              }              instance.mDaoSession = BaseApplication.getDaoSession(context);              instance.userDao = instance.mDaoSession.getUsersDao();          }          return instance;      }        /**       * 根据用户id,取出用户信息       * @param id           用户id       * @return             用户信息       */      public Users loadNote(long id) {          if(!TextUtils.isEmpty(id + "")) {              return userDao.load(id);          }          return  null;      }        /**       * 取出所有数据       * @return      所有数据信息       */      public List<Users> loadAllNote(){          return userDao.loadAll();      }        /**       * 生成按id倒排序的列表       * @return      倒排数据       */      public List<Users> loadAllNoteByOrder()      {          return userDao.queryBuilder().orderDesc(UsersDao.Properties.Id).list();      }        /**       * 根据查询条件,返回数据列表       * @param where        条件       * @param params       参数       * @return             数据列表       */      public List<Users> queryNote(String where, String... params){          return userDao.queryRaw(where, params);      }          /**       * 根据用户信息,插件或修改信息       * @param user              用户信息       * @return 插件或修改的用户id       */      public long saveNote(Users user){          return userDao.insertOrReplace(user);      }          /**       * 批量插入或修改用户信息       * @param list      用户信息列表       */      public void saveNoteLists(final List<Users> list){          if(list == null || list.isEmpty()){              return;          }          userDao.getSession().runInTx(new Runnable() {              @Override              public void run() {                  for(int i=0; i<list.size(); i++){                      Users user = list.get(i);                      userDao.insertOrReplace(user);                  }              }          });        }        /**       * 删除所有数据       */      public void deleteAllNote(){          userDao.deleteAll();      }        /**       * 根据id,删除数据       * @param id      用户id       */      public void deleteNote(long id){          userDao.deleteByKey(id);          Log.i(TAG, "delete");      }        /**       * 根据用户类,删除信息       * @param user    用户信息类       */      public void deleteNote(Users user){          userDao.delete(user);      }  }
  这个类就不多说了,大家一看就明白,很简单,而且里面也已经比较明确的给出了注解.

  第三步,设置布局文件

    1,Toolbar的代码:

       

<?xml version="1.0" encoding="utf-8"?>  <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:app="http://schemas.android.com/apk/res-auto"      android:id="@+id/toolbar"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:background="?attr/colorPrimary"      android:minHeight="?attr/actionBarSize"      app:popupTheme="@style/ThemeOverlay.AppCompat.Light"      app:theme="@style/ThemeOverlay.AppCompat.ActionBar">    </android.support.v7.widget.Toolbar>

   当然了,你要是想使用toolbar,还要为其设置样式,style.xml

  

<resources>        <style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">            <!-- toolbar(actionbar)颜色 -->          <item name="colorPrimary">#4876FF</item>          <!-- 状态栏颜色 -->          <item name="colorPrimaryDark">#3A5FCD</item>          <!--toolbar文字的颜色-->          <item name="@android:textColorPrimary">@android:color/white</item>          <!-- 窗口的背景颜色 -->          <item name="android:windowBackground">@android:color/white</item>          <!-- SearchView -->          <item name="searchViewStyle">@style/MySearchViewStyle</item>            <item name="actionMenuTextColor">#ffffff</item>        </style>        <style name="AppTheme" parent="@style/AppBaseTheme">          <item name="android:windowIsTranslucent">true</item>      </style>        <style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView"></style>        <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">          <item name="spinBars">true</item>          <item name="color">@android:color/white</item>      </style>    </resources>

 现在来看一下页面主布局,这个布局其实很简单,就是一个Toolbar,Toolbar上菜单有一个添加的按钮,而且下面是一个listView用来显示用户,点击添加按钮,弹出一个对话框,显示你要添加的项,填写完后,保存,新加的数据就会在listView中显示出来.点击列表项,会弹出对框,上面有删除与修改的选项,可以对此项进行删除与修改,

  好,先来看一下activity_one_table.xml文件

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      tools:context="com.example.cg.greendaolearn.oneTableActivity"      android:orientation="vertical">      <include          layout="@layout/toolbar" />        <ListView          android:id="@+id/lv_oneTable"          android:layout_width="match_parent"          android:layout_height="0dp"          android:layout_weight="1" />    </LinearLayout>

 接下来,看一下,toolbar菜单栏的布局文件,menu_one_table.xml.主要就是添加了一个添加的按钮

 

<menu xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:app="http://schemas.android.com/apk/res-auto"      xmlns:tools="http://schemas.android.com/tools"      tools:context="com.example.cg.greendaolearn.oneTableActivity">        <item android:id="@+id/menu_onetable_add"          android:title="添加"          app:showAsAction="never" />  </menu>

下面是listView列表显示,哪么我们先为这个列表设置一个item的布局.代码比较简单:'

  activity_onetable_lv_item.xml

 

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical"      android:background="@color/coral">      <LinearLayout          android:layout_width="match_parent"          android:layout_height="wrap_content">          <LinearLayout              android:layout_width="0dp"              android:layout_height="wrap_content"              android:layout_weight="1">              <TextView                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  android:gravity="center"                  android:text="姓名:"                  android:textColor="@color/white"                  android:padding="5dp"/>              <TextView                  android:id="@+id/txt_onetable_uName"                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  android:textColor="@color/white"                  android:padding="5dp"/>          </LinearLayout>          <LinearLayout              android:layout_width="0dp"              android:layout_height="wrap_content"              android:layout_weight="1">              <TextView                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  android:gravity="center"                  android:text="性别:"                  android:textColor="@color/white"                  android:padding="5dp"/>              <TextView                  android:id="@+id/txt_onetable_uSex"                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  android:textColor="@color/white"                  android:padding="5dp"/>          </LinearLayout>      </LinearLayout>      <LinearLayout          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:layout_marginTop="5dp">          <LinearLayout              android:layout_width="0dp"              android:layout_height="wrap_content"              android:layout_weight="1">              <TextView                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  android:gravity="center"                  android:text="年纪:"                  android:textColor="@color/white"                  android:padding="5dp"/>              <TextView                  android:id="@+id/txt_onetable_age"                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  android:textColor="@color/white"                  android:padding="5dp"/>          </LinearLayout>          <LinearLayout              android:layout_width="0dp"              android:layout_height="wrap_content"              android:layout_weight="1">              <TextView                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  android:gravity="center"                  android:text="电话:"                  android:textColor="@color/white"                  android:padding="5dp"/>              <TextView                  android:id="@+id/txt_onetable_tel"                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  android:textColor="@color/white"                  android:padding="5dp"/>          </LinearLayout>      </LinearLayout>  </LinearLayout>

 为再为它设计一个Adapter

  onetable_adapter.java

 

package com.example.cg.greendaolearn.adpater;    import android.content.Context;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.widget.BaseAdapter;  import android.widget.TextView;    import com.example.cg.greendaolearn.R;    import java.util.List;    import greendao.Users;    /**   * 用户信息显示Adapter   * Created by cg on 2015/12/29.   */  public class onetable_adapter extends BaseAdapter {        private LayoutInflater inflater;      private List<Users> list_user;        public onetable_adapter(Context context,List<Users> list_user) {          this.inflater = LayoutInflater.from(context);          this.list_user = list_user;      }        @Override      public int getCount() {          return list_user.size();      }        @Override      public Object getItem(int position) {          return list_user.get(position);      }        @Override      public long getItemId(int position) {          return position;      }        @Override      public View getView(int position, View convertView, ViewGroup parent) {          userInfo uInfo;          if(convertView==null)          {              uInfo = new userInfo();              convertView = inflater.inflate(R.layout.activity_onetable_lv_item,null);              uInfo.uAge = (TextView)convertView.findViewById(R.id.txt_onetable_age);              uInfo.uName = (TextView)convertView.findViewById(R.id.txt_onetable_uName);              uInfo.uSex = (TextView)convertView.findViewById(R.id.txt_onetable_uSex);              uInfo.uTel = (TextView)convertView.findViewById(R.id.txt_onetable_tel);                convertView.setTag(uInfo);          }else          {              uInfo = (userInfo)convertView.getTag();          }            uInfo.uSex.setText(list_user.get(position).getUSex());          uInfo.uTel.setText(list_user.get(position).getUTelphone());          uInfo.uName.setText(list_user.get(position).getUName());          uInfo.uAge.setText(list_user.get(position).getUAge());              return convertView;      }        public class userInfo      {          TextView uName;          TextView uSex;          TextView uAge;          TextView uTel;      }  }

  listVIew搞定了.我们来完成点击添加时,弹出的对话框,这里采用的DialogFragment

  先看布局文件fragment_onetable_dialog.xml

 

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="match_parent">        <LinearLayout          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:orientation="vertical">          <LinearLayout              android:layout_width="match_parent"              android:layout_height="wrap_content">              <LinearLayout                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1">                  <TextView                      android:layout_width="0dp"                      android:layout_height="wrap_content"                      android:layout_weight="1"                      android:gravity="center"                      android:text="姓名:"/>                  <EditText                      android:id="@+id/edit_onetable_name"                      android:layout_width="0dp"                      android:layout_height="wrap_content"                      android:layout_weight="1"                      android:textColor="@color/black"/>              </LinearLayout>              <LinearLayout                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1">                  <TextView                      android:layout_width="0dp"                      android:layout_height="wrap_content"                      android:layout_weight="1"                      android:gravity="center"                      android:text="性别:"/>                  <EditText                      android:id="@+id/edit_onetable_sex"                      android:layout_width="0dp"                      android:layout_height="wrap_content"                      android:layout_weight="1"                      android:textColor="@color/black"/>              </LinearLayout>          </LinearLayout>          <LinearLayout              android:layout_width="match_parent"              android:layout_height="wrap_content">              <LinearLayout                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1">                  <TextView                      android:layout_width="0dp"                      android:layout_height="wrap_content"                      android:layout_weight="1"                      android:gravity="center"                      android:text="电话:"/>                  <EditText                      android:id="@+id/edit_onetable_tel"                      android:layout_width="0dp"                      android:layout_height="wrap_content"                      android:layout_weight="1"                      android:textColor="@color/black"/>              </LinearLayout>              <LinearLayout                  android:layout_width="0dp"                  android:layout_height="wrap_content"                  android:layout_weight="1"                  >                  <TextView                      android:layout_width="0dp"                      android:layout_height="wrap_content"                      android:layout_weight="1"                      android:gravity="center"                      android:text="年纪:"/>                  <EditText                      android:id="@+id/edit_onetable_age"                      android:layout_width="0dp"                      android:layout_height="wrap_content"                      android:layout_weight="1"                      android:textColor="@color/black"/>              </LinearLayout>          </LinearLayout>        </LinearLayout>    </LinearLayout>

代码:oneTableDialogFragment.java

package com.example.cg.greendaolearn;    import android.app.AlertDialog;  import android.app.Dialog;  import android.app.DialogFragment;  import android.content.DialogInterface;  import android.os.Bundle;  import android.view.LayoutInflater;  import android.view.View;  import android.widget.EditText;    /**   * 用户添加与修改   * Created by cg on 2015/12/30.   */  public class oneTableDialogFragment extends DialogFragment {        private  EditText edit_onetable_name;      private  EditText edit_onetable_sex;      private EditText edit_onetable_tel;      private EditText edit_onetable_age;        private String uName;                                      //用户姓名      private String uSex;                                       //用户性别      private String uAge;                                       //用户年纪      private String uTel;                                       //用户电话        private int flag;                                          //flag 标识 0:添加 1:修改      private long uId;                                          //用户id,添加时为0,修改时为正确的id          /**       * 定义点击事件接口       */      public interface addUserOnClickListener      {            void onAddUserOnClick(long id,String uName, String uSex,String uAge,String uTel,int flag);      }        public oneTableDialogFragment(long uId,String uName, String uSex, String uAge, String uTel,int flag) {          this.uName = uName;          this.uSex = uSex;          this.uAge = uAge;          this.uTel = uTel;          this.flag = flag;          this.uId = uId;      }        @Override      public Dialog onCreateDialog(Bundle savedInstanceState)      {          AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());          // Get the layout inflater          LayoutInflater inflater = getActivity().getLayoutInflater();          View view = inflater.inflate(R.layout.fragment_onetable_dialog, null);          edit_onetable_name = (EditText) view.findViewById(R.id.edit_onetable_name);          edit_onetable_sex = (EditText) view.findViewById(R.id.edit_onetable_sex);          edit_onetable_tel = (EditText) view.findViewById(R.id.edit_onetable_tel);          edit_onetable_age = (EditText)view.findViewById(R.id.edit_onetable_age);              edit_onetable_name.setText(uName);          edit_onetable_age.setText(uAge);          edit_onetable_sex.setText(uSex);          edit_onetable_tel.setText(uTel);            // Inflate and set the layout for the dialog          // Pass null as the parent view because its going in the dialog layout          builder.setView(view)                  // Add action buttons                  .setTitle("添加用户")                  .setPositiveButton("添加",                          new DialogInterface.OnClickListener()                          {                              @Override                              public void onClick(DialogInterface dialog, int id)                              {                                  addUserOnClickListener listener = (addUserOnClickListener) getActivity();                                  listener.onAddUserOnClick(uId,edit_onetable_name.getText().toString(),                                          edit_onetable_sex.getText().toString(),                                          edit_onetable_age.getText().toString(),                                          edit_onetable_tel.getText().toString(),                                          flag);                              }                          }).setNegativeButton("取消", new DialogInterface.OnClickListener() {                              @Override                              public void onClick(DialogInterface dialog, int which) {                                  edit_onetable_name.setText("");                                  edit_onetable_sex.setText("");                                  edit_onetable_age.setText("");                                  edit_onetable_tel.setText("");                              }          });          return builder.create();      }  }

这里就不多说了,一是代码比较简单,二是里面的注释也比较清楚,大家一眼就明白了.

下面就是对点击item项的时候,弹出的对框进行设计,先看布局,就两个textView

fragment_onetable_itemdialog.xml

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical">        <TextView          android:id="@+id/txt_onetable_update"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:text="修改"          android:padding="10dp"          android:gravity="center"/>      <View          android:layout_width="match_parent"          android:layout_height="1dp"          android:background="@color/gray"/>      <TextView          android:id="@+id/txt_onetable_delete"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:text="删除"          android:padding="10dp"          android:gravity="center"/>  </LinearLayout>

代码:oneTableItemDialogFragment.java

package com.example.cg.greendaolearn;    import android.app.DialogFragment;  import android.os.Bundle;  import android.support.annotation.Nullable;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.view.Window;  import android.widget.TextView;    /**   * Created by cg on 2015/12/30.   */  public class oneTableItemDialogFragment extends DialogFragment {        private long id;                                  //用户id      private int postion;                              //list中的编号      private TextView txt_onetable_update;      private TextView txt_onetable_delete;        public interface EditUserOnClickListener      {          //flag标识,0表示删除,1表示修改          void onEditUserOnClick(long id,int postion,int flag);      }        public oneTableItemDialogFragment(long id,int postion) {          this.id = id;          this.postion = postion;      }        @Nullable      @Override      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {          getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);          View view = inflater.inflate(R.layout.fragment_onetable_itemdialog,container);            return view;      }        @Override      public void onViewCreated(View view, Bundle savedInstanceState) {          super.onViewCreated(view, savedInstanceState);            txt_onetable_update = (TextView)view.findViewById(R.id.txt_onetable_update);          txt_onetable_update.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View v) {                  EditUserOnClickListener listener = (EditUserOnClickListener) getActivity();                  listener.onEditUserOnClick(id,postion,1);              }          });          txt_onetable_delete = (TextView)view.findViewById(R.id.txt_onetable_delete);          txt_onetable_delete.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View v) {                  EditUserOnClickListener listener = (EditUserOnClickListener) getActivity();                  listener.onEditUserOnClick(id,postion,0);              }          });      }  }

OK了,现在我们来看一下,主程序的代码:oneTableActivity.java

package com.example.cg.greendaolearn;    import android.os.Bundle;  import android.support.v7.app.AppCompatActivity;  import android.support.v7.widget.Toolbar;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.widget.AdapterView;  import android.widget.ListView;  import android.widget.Toast;    import com.example.cg.greendaolearn.adpater.onetable_adapter;  import com.example.cg.greendaolearn.db.DbService;    import java.util.ArrayList;  import java.util.List;    import greendao.Users;    public class oneTableActivity extends AppCompatActivity implements oneTableDialogFragment.addUserOnClickListener,oneTableItemDialogFragment.EditUserOnClickListener {        private Toolbar toolbar;                                                   //定义toolbar      private ListView lv_oneTable;        private List<Users> list_user;      private onetable_adapter oAdapter;        private DbService db;        private oneTableItemDialogFragment oneItemDialog;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_one_table);            toolbar = (Toolbar)this.findViewById(R.id.toolbar);          toolbar.setTitle("单表操作");                     // 标题的文字需在setSupportActionBar之前,不然会无效          setSupportActionBar(toolbar);            db = DbService.getInstance(this);            initControls();            initData();      }        /**       * 初始化数据,刚进入页面时加载       */      private void initData() {            list_user = new ArrayList<>();          list_user = db.loadAllNoteByOrder();          oAdapter = new onetable_adapter(this,list_user);          lv_oneTable.setAdapter(oAdapter);      }        /**       * 初始化控件       */      private void initControls() {            lv_oneTable = (ListView)findViewById(R.id.lv_oneTable);          lv_oneTable.setOnItemClickListener(new AdapterView.OnItemClickListener() {              @Override              public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                  Toast.makeText(oneTableActivity.this,list_user.get(position).getUName() + "--" +                          list_user.get(position).getId(),Toast.LENGTH_SHORT).show();                    oneItemDialog = new oneTableItemDialogFragment(list_user.get(position).getId(),position);                  oneItemDialog.show(getFragmentManager(),"编辑");              }          });      }        @Override      public boolean onCreateOptionsMenu(Menu menu) {          // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.menu_one_table, menu);          return true;      }        @Override      public boolean onOptionsItemSelected(MenuItem item) {          // Handle action bar item clicks here. The action bar will          // automatically handle clicks on the Home/Up button, so long          // as you specify a parent activity in AndroidManifest.xml.          int id = item.getItemId();            //noinspection SimplifiableIfStatement          if (id == R.id.menu_onetable_add) {              oneTableDialogFragment oneDialog = new oneTableDialogFragment(0,"","","","",0);              oneDialog.show(getFragmentManager(),"添加用户");              return true;          }            return super.onOptionsItemSelected(item);      }            @Override      public void onAddUserOnClick(long uId,String uName, String uSex, String uAge, String uTel,int flag) {          Users user = new Users();          if(flag==1) {              user.setId(uId);          }          user.setUSex(uSex);          user.setUTelphone(uTel);          user.setUAge(uAge);          user.setUName(uName);          if(flag==0) {              if (db.saveNote(user) > 0) {                  list_user.add(0, user);                  oAdapter.notifyDataSetChanged();              }          }else          {              if (db.saveNote(user) > 0) {                    int num = 0;                  for(Users u:list_user)                  {                      if(u.getId()==uId)                      {                          list_user.remove(num);                          list_user.add(num,user);                            break;                      }                      num++;                  }                  oAdapter.notifyDataSetChanged();              }          }      }        @Override      public void onEditUserOnClick(long id,int postion,int flag) {          if(flag==0) {              db.deleteNote(id);              list_user.remove(postion);              oAdapter.notifyDataSetChanged();              oneItemDialog.dismiss();          }else          {              Users updateUser = db.loadNote(id);              oneTableDialogFragment oDialog = new oneTableDialogFragment(updateUser.getId(),updateUser.getUName(),updateUser.getUSex(),                      updateUser.getUAge(), updateUser.getUTelphone(),1);              oneItemDialog.dismiss();              oDialog.show(getFragmentManager(),"修改");          }          }  }

运行效果图: