├── .gitignore ├── .idea ├── .name ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml └── runConfigurations.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── libs │ └── xUtils-2.6.14.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hensen │ │ └── greendaodemo │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hensen │ │ │ └── greendaodemo │ │ │ ├── Activity │ │ │ └── MainActivity.java │ │ │ ├── Adapter │ │ │ └── ShopListAdapter.java │ │ │ ├── Base │ │ │ └── BaseApplication.java │ │ │ ├── Bean │ │ │ └── Shop.java │ │ │ └── Dao │ │ │ └── LoveDao.java │ └── res │ │ ├── drawable │ │ └── preview.png │ │ ├── layout │ │ ├── activity_main.xml │ │ └── adapter_shop_list.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hensen │ └── greendaodemo │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | GreenDaoDemo -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 23 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | 1.8 51 | 52 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GreenDaoDemo 2 | GreenDao3.2的使用,仿购物车Demo 3 | 4 | ## 效果图 5 | 6 | ![](https://github.com/AndroidHensen/GreenDaoDemo/blob/master/app/src/main/res/drawable/preview.png) 7 | 8 | ## 主要API 9 | 10 | ```java 11 | public class LoveDao { 12 | 13 | /** 14 | * 添加数据 15 | * 16 | * @param shop 17 | */ 18 | public static void insertLove(Shop shop) { 19 | BaseApplication.getDaoInstant().getShopDao().insert(shop); 20 | } 21 | 22 | /** 23 | * 删除数据 24 | * 25 | * @param id 26 | */ 27 | public static void deleteLove(long id) { 28 | BaseApplication.getDaoInstant().getShopDao().deleteByKey(id); 29 | } 30 | 31 | /** 32 | * 更新数据 33 | * 34 | * @param shop 35 | */ 36 | public static void updateLove(Shop shop) { 37 | BaseApplication.getDaoInstant().getShopDao().update(shop); 38 | } 39 | 40 | /** 41 | * 查询条件为Type=TYPE_LOVE的数据 42 | * 43 | * @return 44 | */ 45 | public static List queryLove() { 46 | return BaseApplication.getDaoInstant().getShopDao().queryBuilder().where(ShopDao.Properties.Type.eq(Shop.TYPE_LOVE)).list(); 47 | } 48 | } 49 | ``` 50 | 51 | ## 原文地址 52 | 53 | CSDN博客:http://blog.csdn.net/qq_30379689/article/details/54410838 54 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'org.greenrobot.greendao' 3 | 4 | android { 5 | compileSdkVersion 24 6 | buildToolsVersion "25.0.2" 7 | 8 | defaultConfig { 9 | applicationId "com.hensen.greendaodemo" 10 | minSdkVersion 16 11 | targetSdkVersion 24 12 | versionCode 1 13 | versionName "1.0" 14 | } 15 | //greendao配置 16 | greendao { 17 | //版本号,升级时可配置 18 | schemaVersion 1 19 | } 20 | buildTypes { 21 | release { 22 | minifyEnabled false 23 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 24 | } 25 | } 26 | } 27 | 28 | dependencies { 29 | compile fileTree(include: ['*.jar'], dir: 'libs') 30 | testCompile 'junit:junit:4.12' 31 | compile 'com.android.support:appcompat-v7:24.2.1' 32 | //ORM数据库 33 | compile 'org.greenrobot:greendao:3.2.0' 34 | compile files('libs/xUtils-2.6.14.jar') 35 | } 36 | -------------------------------------------------------------------------------- /app/libs/xUtils-2.6.14.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndroidHensen/GreenDaoDemo/5dc1bc3f019bd0b949b56e779bc13ceeefc69ebc/app/libs/xUtils-2.6.14.jar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in E:\Eclipse\android-studio-sdk\android-sdk-windows/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/hensen/greendaodemo/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.hensen.greendaodemo; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/hensen/greendaodemo/Activity/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hensen.greendaodemo.Activity; 2 | 3 | import android.os.Handler; 4 | import android.os.Message; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.os.Bundle; 7 | import android.util.Log; 8 | import android.view.View; 9 | import android.widget.Button; 10 | import android.widget.ListView; 11 | import android.widget.TextView; 12 | 13 | import com.hensen.greendaodemo.Adapter.ShopListAdapter; 14 | import com.hensen.greendaodemo.Bean.Shop; 15 | import com.hensen.greendaodemo.Dao.LoveDao; 16 | import com.hensen.greendaodemo.R; 17 | 18 | import java.util.ArrayList; 19 | import java.util.List; 20 | 21 | public class MainActivity extends AppCompatActivity implements View.OnClickListener { 22 | 23 | private Button bt_add, bt_delete, bt_update, bt_query; 24 | private ListView lv_content; 25 | private ShopListAdapter adapter; 26 | private List shops; 27 | private static int i = 10; 28 | 29 | @Override 30 | protected void onCreate(Bundle savedInstanceState) { 31 | super.onCreate(savedInstanceState); 32 | setContentView(R.layout.activity_main); 33 | 34 | bt_add = (Button) findViewById(R.id.bt_add); 35 | bt_delete = (Button) findViewById(R.id.bt_delete); 36 | bt_update = (Button) findViewById(R.id.bt_update); 37 | bt_query = (Button) findViewById(R.id.bt_query); 38 | lv_content = (ListView) findViewById(R.id.lv_content); 39 | bt_add.setOnClickListener(this); 40 | bt_delete.setOnClickListener(this); 41 | bt_update.setOnClickListener(this); 42 | bt_query.setOnClickListener(this); 43 | 44 | queryDate(); 45 | } 46 | 47 | @Override 48 | public void onClick(View v) { 49 | switch (v.getId()) { 50 | case R.id.bt_add: 51 | addDate(); 52 | break; 53 | case R.id.bt_delete: 54 | deleteDate(); 55 | break; 56 | case R.id.bt_update: 57 | updateDate(); 58 | break; 59 | case R.id.bt_query: 60 | queryDate(); 61 | break; 62 | } 63 | } 64 | 65 | private void deleteDate() { 66 | if (!shops.isEmpty()) { 67 | LoveDao.deleteLove(shops.get(0).getId()); 68 | queryDate(); 69 | } 70 | } 71 | 72 | private void queryDate() { 73 | shops = new ArrayList<>(); 74 | shops = LoveDao.queryLove(); 75 | adapter = new ShopListAdapter(this, shops); 76 | lv_content.setAdapter(adapter); 77 | } 78 | 79 | private void addDate() { 80 | Shop shop = new Shop(); 81 | shop.setType(Shop.TYPE_LOVE); 82 | shop.setAddress("广东深圳"); 83 | shop.setImage_url("https://img.alicdn.com/bao/uploaded/i2/TB1N4V2PXXXXXa.XFXXXXXXXXXX_!!0-item_pic.jpg_640x640q50.jpg"); 84 | shop.setPrice("19.40"); 85 | shop.setSell_num(15263); 86 | shop.setName("正宗梅菜扣肉 聪厨梅干菜扣肉 家宴常备方便菜虎皮红烧肉 2盒包邮" + i++); 87 | LoveDao.insertLove(shop); 88 | queryDate(); 89 | } 90 | 91 | private void updateDate() { 92 | if (!shops.isEmpty()) { 93 | Shop shop = shops.get(0); 94 | shop.setName("我是修改的名字"); 95 | LoveDao.updateLove(shop); 96 | queryDate(); 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /app/src/main/java/com/hensen/greendaodemo/Adapter/ShopListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.hensen.greendaodemo.Adapter; 2 | 3 | import android.content.Context; 4 | import android.graphics.Paint; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.BaseAdapter; 9 | import android.widget.ImageView; 10 | import android.widget.TextView; 11 | 12 | import com.hensen.greendaodemo.R; 13 | import com.hensen.greendaodemo.Bean.Shop; 14 | import com.lidroid.xutils.BitmapUtils; 15 | 16 | import java.util.List; 17 | 18 | /** 19 | * Created by handsome on 2016/4/8. 20 | */ 21 | public class ShopListAdapter extends BaseAdapter { 22 | 23 | private List list; 24 | //使用XUtils2包的图片加载模块 25 | private BitmapUtils bitmapUtils; 26 | private LayoutInflater mInflater; 27 | 28 | public ShopListAdapter(Context context, List list) { 29 | this.list = list; 30 | mInflater = LayoutInflater.from(context); 31 | bitmapUtils = new BitmapUtils(context); 32 | } 33 | 34 | @Override 35 | public int getCount() { 36 | return list.size(); 37 | } 38 | 39 | @Override 40 | public Object getItem(int position) { 41 | return list.get(position); 42 | } 43 | 44 | @Override 45 | public long getItemId(int position) { 46 | return position; 47 | } 48 | 49 | @Override 50 | public View getView(int position, View convertView, ViewGroup parent) { 51 | if (convertView == null) { 52 | convertView = mInflater.inflate(R.layout.adapter_shop_list, null); 53 | } 54 | ViewHolder holder = getViewHolder(convertView); 55 | Shop shop = list.get(position); 56 | bitmapUtils.display(holder.iv_shop, shop.getImage_url()); 57 | holder.tv_name.setText(shop.getName()); 58 | holder.tv_price.setText(shop.getPrice() + ""); 59 | holder.tv_price_discount.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG); 60 | holder.tv_sell_num.setText("已售" + shop.getSell_num() + "件"); 61 | return convertView; 62 | } 63 | 64 | /** 65 | * 获得控件管理对象 66 | * 67 | * @param view 68 | * @return 69 | */ 70 | private ViewHolder getViewHolder(View view) { 71 | ViewHolder holder = (ViewHolder) view.getTag(); 72 | if (holder == null) { 73 | holder = new ViewHolder(view); 74 | view.setTag(holder); 75 | } 76 | return holder; 77 | } 78 | 79 | /** 80 | * 控件管理类 81 | */ 82 | private class ViewHolder { 83 | private TextView tv_name, tv_price, tv_price_discount, tv_sell_num; 84 | private ImageView iv_shop; 85 | 86 | ViewHolder(View view) { 87 | tv_name = (TextView) view.findViewById(R.id.tv_name); 88 | tv_price = (TextView) view.findViewById(R.id.tv_price); 89 | tv_price_discount = (TextView) view.findViewById(R.id.tv_price_discount); 90 | tv_sell_num = (TextView) view.findViewById(R.id.tv_sell_num); 91 | iv_shop = (ImageView) view.findViewById(R.id.iv_shop); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /app/src/main/java/com/hensen/greendaodemo/Base/BaseApplication.java: -------------------------------------------------------------------------------- 1 | package com.hensen.greendaodemo.Base; 2 | 3 | import android.app.Application; 4 | import android.database.sqlite.SQLiteDatabase; 5 | 6 | import com.hensen.greendaodemo.DaoMaster; 7 | import com.hensen.greendaodemo.DaoSession; 8 | 9 | /** 10 | * =====作者===== 11 | * 许英俊 12 | * =====时间===== 13 | * 2017/1/15. 14 | */ 15 | public class BaseApplication extends Application{ 16 | 17 | private static DaoSession daoSession; 18 | 19 | @Override 20 | public void onCreate() { 21 | super.onCreate(); 22 | //配置数据库 23 | setupDatabase(); 24 | } 25 | 26 | /** 27 | * 配置数据库 28 | */ 29 | private void setupDatabase() { 30 | DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "shop.db", null); 31 | SQLiteDatabase db = helper.getWritableDatabase(); 32 | DaoMaster daoMaster = new DaoMaster(db); 33 | daoSession = daoMaster.newSession(); 34 | } 35 | 36 | public static DaoSession getDaoInstant() { 37 | return daoSession; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/hensen/greendaodemo/Bean/Shop.java: -------------------------------------------------------------------------------- 1 | package com.hensen.greendaodemo.Bean; 2 | 3 | import android.widget.ImageView; 4 | 5 | import org.greenrobot.greendao.annotation.Entity; 6 | import org.greenrobot.greendao.annotation.Id; 7 | 8 | import java.io.Serializable; 9 | 10 | import org.greenrobot.greendao.annotation.Generated; 11 | import org.greenrobot.greendao.annotation.Property; 12 | import org.greenrobot.greendao.annotation.Unique; 13 | 14 | /** 15 | * Created by handsome on 2016/4/8. 16 | */ 17 | @Entity 18 | public class Shop{ 19 | 20 | public static final int TYPE_CART = 0x01; 21 | public static final int TYPE_LOVE = 0x02; 22 | 23 | //不能用int 24 | @Id(autoincrement = true) 25 | private Long id; 26 | @Unique 27 | private String name; 28 | @Property(nameInDb = "price") 29 | private String price; 30 | private int sell_num; 31 | private String image_url; 32 | private String address; 33 | private int type; 34 | @Generated(hash = 1304458862) 35 | public Shop(Long id, String name, String price, int sell_num, String image_url, 36 | String address, int type) { 37 | this.id = id; 38 | this.name = name; 39 | this.price = price; 40 | this.sell_num = sell_num; 41 | this.image_url = image_url; 42 | this.address = address; 43 | this.type = type; 44 | } 45 | @Generated(hash = 633476670) 46 | public Shop() { 47 | } 48 | public Long getId() { 49 | return this.id; 50 | } 51 | public void setId(Long id) { 52 | this.id = id; 53 | } 54 | public String getName() { 55 | return this.name; 56 | } 57 | public void setName(String name) { 58 | this.name = name; 59 | } 60 | public String getPrice() { 61 | return this.price; 62 | } 63 | public void setPrice(String price) { 64 | this.price = price; 65 | } 66 | public int getSell_num() { 67 | return this.sell_num; 68 | } 69 | public void setSell_num(int sell_num) { 70 | this.sell_num = sell_num; 71 | } 72 | public String getImage_url() { 73 | return this.image_url; 74 | } 75 | public void setImage_url(String image_url) { 76 | this.image_url = image_url; 77 | } 78 | public String getAddress() { 79 | return this.address; 80 | } 81 | public void setAddress(String address) { 82 | this.address = address; 83 | } 84 | public int getType() { 85 | return this.type; 86 | } 87 | public void setType(int type) { 88 | this.type = type; 89 | } 90 | 91 | } 92 | -------------------------------------------------------------------------------- /app/src/main/java/com/hensen/greendaodemo/Dao/LoveDao.java: -------------------------------------------------------------------------------- 1 | package com.hensen.greendaodemo.Dao; 2 | 3 | import com.hensen.greendaodemo.Base.BaseApplication; 4 | import com.hensen.greendaodemo.Bean.Shop; 5 | import com.hensen.greendaodemo.ShopDao; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by handsome on 2016/4/19. 11 | */ 12 | public class LoveDao { 13 | 14 | /** 15 | * 添加数据 16 | * 17 | * @param shop 18 | */ 19 | public static void insertLove(Shop shop) { 20 | BaseApplication.getDaoInstant().getShopDao().insert(shop); 21 | } 22 | 23 | /** 24 | * 删除数据 25 | * 26 | * @param id 27 | */ 28 | public static void deleteLove(long id) { 29 | BaseApplication.getDaoInstant().getShopDao().deleteByKey(id); 30 | } 31 | 32 | /** 33 | * 更新数据 34 | * 35 | * @param shop 36 | */ 37 | public static void updateLove(Shop shop) { 38 | BaseApplication.getDaoInstant().getShopDao().update(shop); 39 | } 40 | 41 | /** 42 | * 查询条件为Type=TYPE_LOVE的数据 43 | * 44 | * @return 45 | */ 46 | public static List queryLove() { 47 | return BaseApplication.getDaoInstant().getShopDao().queryBuilder().where(ShopDao.Properties.Type.eq(Shop.TYPE_LOVE)).list(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndroidHensen/GreenDaoDemo/5dc1bc3f019bd0b949b56e779bc13ceeefc69ebc/app/src/main/res/drawable/preview.png -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 24 | 25 | 32 | 33 | 37 | 38 |