GreenDao的简单使用

本文介绍如何在Android项目中集成GreenDAO库,并提供了一个简单的使用示例,包括数据库配置、工具类实现及基本操作。


一、配置

1.修改gradle文件夹下的gradle-wrapper.properties修改为:

distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
2、在工程的buildgradle中导入

   dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
        
    }
3、在项目的buildgradle中导入
//导入插件
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'

//在dependencies中添加如下代码

dependencies {

    compile 'org.greenrobot:greendao:3.2.2'


}

二、工具类

public class Daosingleton {

    private static Daosingleton daosingleton;

    private Daosingleton() {

    }

    public BookDao getdao(Context context) {

        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(context, "students.db", null);
        DaoMaster daoMaster = new DaoMaster(devOpenHelper.getReadableDb());
        DaoSession daoSession = daoMaster.newSession();
        BookDao studentsDao = daoSession.getBookDao();
        return studentsDao;

    }
    public static Daosingleton getDaosingleton() {
        if (daosingleton == null) {
            synchronized (Daosingleton.class) {
                if (daosingleton == null) {
                    daosingleton = new Daosingleton();
                }
            }
        }
        return daosingleton;
    }
}
三、简单使用
public class Main2Activity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemLongClickListener {

    private Button insert;
    private ProgressBar bar;
    private ListView listview;
    private BookDao getdao;
    private MyAdapter myAdapter;
    private List<Book> list=null;
    private PopupWindow window;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        getdao = Daosingleton.getDaosingleton().getdao(Main2Activity.this);
        initView();
        initData();
    }

    private void initPro(final List<Book> list1) {
        Handler handler=new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        bar.setVisibility(View.GONE);
                        myAdapter.notifys(list1);
                    }
                });
            }
        }, 2000);
    }

    private void initView() {
        insert = (Button) findViewById(R.id.insert);
        bar = (ProgressBar) findViewById(R.id.bar);
        listview = (ListView) findViewById(R.id.listview);
       /* initPro();*/
        insert.setOnClickListener(this);


    }

    private void initData() {
        list = getdao.queryBuilder().build().list();
        myAdapter = new MyAdapter(Main2Activity.this, list);
        listview.setAdapter(myAdapter);
        myAdapter.notifys(list);
        listview.setOnItemLongClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.insert:
                Intent intent=new Intent(Main2Activity.this,Main3Activity.class);
                startActivity(intent);
                break;
        }
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, final int i, long l) {
        View view1=View.inflate(Main2Activity.this,R.layout.view,null);
        window = new PopupWindow(view1,300,300);
        window.showAsDropDown(listview.getChildAt(i));
        window.setBackgroundDrawable(new ColorDrawable(0));
        window.setOutsideTouchable(true);
        Button updata=(Button) view1.findViewById(R.id.updata);
        Button delete=(Button) view1.findViewById(R.id.delete);
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Book book = list.get(i);
                myAdapter.de(book);
                getdao.delete(book);
                myAdapter.notifys(list);
                window.dismiss();
            }
        });
        updata.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Book book = list.get(i);
                getdao.delete(book);
                myAdapter.de(book);
                Intent intent=new Intent(Main2Activity.this,Main3Activity.class);
                startActivity(intent);
                window.dismiss();
            }
        });
        return false;
    }
    @Override
    protected void onResume() {
        super.onResume();

        list.clear();
        list = getdao.queryBuilder().list();
        initPro(list);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值