依賴與文件配置java
// In your root build.gradle file: 根目錄android
buildscript { repositories { jcenter() mavenCentral() // add repository } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' // add plugin } }
// In your app projects build.gradle file: 項目目錄數據庫
apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' // apply plugin
dependencies { compile 'org.greenrobot:greendao:3.0.1' // add library }
androidsession
greendao{ schemaVersion 1 daoPackage 'com.jiyun.com.greendao' targetGenDir 'src/main/java' }
數據庫實體類Userapp
//implements Serializable序列化(讓頁面能夠傳對象) @Entity public class User implements Serializable { @Id(autoincrement = true) private Long id; @Property() private String name; @Property() private String sex; @Property() private String age; }
所有配置完成:maven
Build 選項裏的==》 Rebuild Projectide
編譯項目,User實體類會自動編譯,生成get、set方法而且會在com.jiyun.greendao.gen目錄下生成三個文件;
------------------------------------------------------------------------------------------------------------佈局
數據庫類gradle
public class App extends Application { private static App app; private DaoSession daoSession; @Override public void onCreate() { app = this; setSession(); super.onCreate(); } public static App getApp(){ return app; } private void setSession() { DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "YiKu"); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); } public DaoSession getSession(){ return daoSession; } }
//清單文件ui
android:name=".數據庫類名"
具體 增.刪.改.查 實現
public class MainActivity extends AppCompatActivity { private DaoSession session; private ListView lv_Main; private TextView text; private List<User> users; private MyListAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //獲取數據庫管理類對象 App app = App.getApp(); session = app.getSession(); initDate(); initInsert(); initLoadAll(); inteOnLongClick(); } //長按彈出選擇框 private void inteOnLongClick() { lv_Main.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(final AdapterView<?> adapterView, View view, final int z, long l) { Dialog log=new AlertDialog.Builder(MainActivity.this).setTitle("修改") .setMessage("是否修改") .setPositiveButton("刪除", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { //刪除 UserDao userDao = session.getUserDao(); userDao.deleteByKey(users.get(z).getId()); initLoadAll(); } }) .setNegativeButton("修改", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { //跳轉修改頁面 Intent intent=new Intent(MainActivity.this,Main2Activity.class); intent.putExtra("ints","2"); intent.putExtra("bean",users.get(z)); startActivity(intent); } }).create(); log.show(); return false; } }); } //點擊跳轉添加頁面 private void initInsert() { text.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,Main2Activity.class); intent.putExtra("ints","1"); startActivity(intent); } }); } //查詢 private void initLoadAll() { UserDao userDao = session.getUserDao(); users = userDao.loadAll(); adapter = new MyListAdapter(users,MainActivity.this); lv_Main.setAdapter(adapter); } //添加初始數據 private void initDate() { UserDao userDao = session.getUserDao(); List<User> users = userDao.loadAll(); for (int i = 0; i < 10; i++) { User user = new User(); user.setAge(18 + i + ""); user.setName("張三" + i); user.setSex("男"); userDao.insert(user); } } private void initView() { lv_Main = (ListView) findViewById(R.id.lv_Main); text = (TextView) findViewById(R.id.text); } //刷新 適配器 顯示 //當activity跳轉恢復的時候,onResume()方法會被調用,因此這是一個刷新的好機會 @Override protected void onResume() { super.onResume(); initLoadAll(); adapter.notifyDataSetChanged(); } }
跳轉的頁面實現
public class Main2Activity extends AppCompatActivity implements View.OnClickListener { private EditText ed_name; private EditText ed_age; private EditText ed_set; private Button btn_BFragment; private String ints; private App app; private Long id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); app = App.getApp(); initView(); Intent intent = getIntent(); ints = intent.getStringExtra("ints"); if(ints.equals("1")){ btn_BFragment.setText("插入"); }else if(ints.equals("2")) { btn_BFragment.setText("修改"); //這裏須要修改 強轉 User bean = (User) intent.getSerializableExtra("bean"); id = bean.getId(); ed_name.setText(bean.getName()); ed_set.setText(bean.getSex()); ed_age.setText(bean.getAge()); } } //添加 private void initDate() { String name = ed_name.getText().toString(); String age = ed_age.getText().toString(); String sex = ed_set.getText().toString(); User user = new User(); user.setName(name); user.setAge(age); user.setSex(sex); DaoSession session = app.getSession(); UserDao userDao = session.getUserDao(); userDao.insert(user); } private void initView() { ed_name = (EditText) findViewById(R.id.ed_name); ed_age = (EditText) findViewById(R.id.ed_age); ed_set = (EditText) findViewById(R.id.ed_set); btn_BFragment = (Button) findViewById(R.id.btn_BFragment); btn_BFragment.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_BFragment: if(ints.equals("1")){ initDate(); finish(); }else{ initUpDate(); finish(); } break; } } //修改 private void initUpDate() { String name = ed_name.getText().toString(); String age = ed_age.getText().toString(); String sex = ed_set.getText().toString(); User user=new User(); user.setName(name); user.setAge(age); user.setSex(sex); user.setId(id); DaoSession session = app.getSession(); UserDao userDao = session.getUserDao(); userDao.update(user); } }
適配器
public class MyListAdapter extends BaseAdapter { private List<User> users; private Context context; public MyListAdapter(List<User> users, Context context) { this.users = users; this.context = context; } @Override public int getCount() { return users.size(); } @Override public Object getItem(int i) { return users.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder = null; if (view == null) { view = LayoutInflater.from(context).inflate(R.layout.item, null); holder = new ViewHolder(view); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.name.setText(users.get(i).getName()); holder.age.setText(users.get(i).getAge()); holder.sex.setText(users.get(i).getSex()); return view; } public static class ViewHolder { public View rootView; public TextView name; public TextView age; public TextView sex; public ViewHolder(View rootView) { this.rootView = rootView; this.name = (TextView) rootView.findViewById(R.id.name); this.age = (TextView) rootView.findViewById(R.id.age); this.sex = (TextView) rootView.findViewById(R.id.sex); } } }
佈局文件
1主頁面
<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" android:orientation="vertical" android:gravity="center" tools:context="com.example.myzuoye.MainActivity"> <ListView android:id="@+id/lv_Main" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp"></ListView> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+++++++++++++" /> </LinearLayout>
主頁面LisetView佈局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="match_parent"> <TextView android:id="@+id/name" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/age" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/sex" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> </LinearLayout>
2跳轉頁面
<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" android:orientation="vertical" android:gravity="center" tools:context="com.example.myzuoye.Main2Activity"> <EditText android:hint="姓名" android:id="@+id/ed_name" android:layout_width="200dp" android:layout_height="wrap_content" /> <EditText android:hint="年齡" android:id="@+id/ed_age" android:layout_width="200dp" android:layout_height="wrap_content" /> <EditText android:hint="性別" android:id="@+id/ed_set" android:layout_width="200dp" android:layout_height="wrap_content" /> <Button android:text="添加" android:id="@+id/btn_BFragment" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>