GreenDao 增删改查

首先 是需要的依赖 在 app    的   build.gradle里面添加 

compile 'org.greenrobot:greendao:3.2.0'
greendao {
    schemaVersion 1
    daoPackage 'geendao.om.mygreendaoapidemo.dao'//注意改包名
    targetGenDir 'src/main/java'
}
apply plugin: 'org.greenrobot.greendao' 在顶部声明

而这个需要在Projcet里面添加
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'

正文开始  布局+主要类
第一个页面布局 省略 
第二个开始 
注意  最外层是相对布局
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="4"
        android:gravity="center"
        android:text="学员登记信息" />

    <Button
        android:id="@+id/btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="添加" />
</LinearLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#000" />

<ProgressBar
    android:id="@+id/progressBar2"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<ListView
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="invisible" />

第二布局之子布局
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="详细信息"
    android:layout_gravity="center_horizontal"
    android:textSize="35sp"/>

<LinearLayout
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/item_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/item_name"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="0dp"
            android:text="名称" />

        <TextView
            android:id="@+id/item_publish"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="0dp"
            android:text="出版社" />

    </LinearLayout>
第三布局
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="35sp"
    android:text="添加信息"
    android:layout_gravity="center_horizontal"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="书名:" />

        <EditText
            android:id="@+id/edit_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="出版商:" />

        <EditText
            android:id="@+id/edit_publish"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="确定" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="取消" />

    </LinearLayout>
popu布局
<Button
    android:id="@+id/pop_delete"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="删除" />

<Button
    android:id="@+id/pop_update"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="修改" />

修改布局
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="书名:" />

    <EditText
        android:id="@+id/alert_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="出版商:" />

    <EditText
        android:id="@+id/alert_publish"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

主类开始
第一个 
private ImageView image;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
}

private void initView() {
    image = (ImageView) findViewById(R.id.image);
    AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f);
    animation.setDuration(2000);
    image.startAnimation(animation);
    animation.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            Intent intent = new Intent(MainActivity.this, Main2Activity.class);
            startActivity(intent);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });
}

第二个
package com.example.dell.shujukulianxi2;

import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.ProgressBar;

import java.util.ArrayList;
import java.util.List;

public class Main2Activity extends AppCompatActivity implements AdapterView.OnItemLongClickListener, View.OnClickListener {

    private Button btn;
    private ProgressBar progressBar2;
    private ListView listview;
    private List<Book> list = new ArrayList<>();
    private MyAdapter adapter;
    private BookDao bookDao;
    private Button pop_delete;
    private Button pop_update;
    private Button bt_delete;
    private Button bt_update;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
        getData();
    }

    private void initView() {
        btn = (Button) findViewById(R.id.btn);
        progressBar2 = (ProgressBar) findViewById(R.id.progressBar2);
        listview = (ListView) findViewById(R.id.listview);

        btn.setOnClickListener(this);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                progressBar2.setVisibility(View.GONE);
                listview.setVisibility(View.VISIBLE);
            }
        }, 2000);
        listview.setOnItemLongClickListener(this);
        adapter = new MyAdapter(Main2Activity.this, list);
        listview.setAdapter(adapter);

    }

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

        }
    }

    public void getData() {
        bookDao = DateOpenHelper.getDateOpenHelper().getWriter(getApplicationContext(), "book.db");
        List<Book> bookList = bookDao.queryBuilder().build().list();
        list.clear();
        list.addAll(bookList);
        adapter.notifyDataSetChanged();
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
        final PopupWindow window = new PopupWindow(500, 500);
        View inflate = View.inflate(Main2Activity.this, R.layout.popwindow, null);
        window.setContentView(inflate);
        window.setFocusable(true);

        window.setBackgroundDrawable(new ColorDrawable(0));
        window.setOutsideTouchable(true);
        window.showAsDropDown(view);
        bt_delete = (Button) inflate.findViewById(R.id.pop_delete);
        bt_update = (Button) inflate.findViewById(R.id.pop_update);
        bt_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                window.dismiss();
                bookDao.delete(list.get(position));
                List<Book> bookList = bookDao.queryBuilder().build().list();
                list.clear();
                list.addAll(bookList);
                adapter.notifyDataSetChanged();

            }
        });
        bt_update.setOnClickListener(new View.OnClickListener() {

            private EditText alert_publish;
            private EditText alert_name;

            @Override
            public void onClick(View v) {
                window.dismiss();
                View view1 = View.inflate(Main2Activity.this, R.layout.alert_item, null);
                alert_name = (EditText) view1.findViewById(R.id.alert_name);
                alert_publish = (EditText) view1.findViewById(R.id.alert_publish);
                AlertDialog builder = new AlertDialog.Builder(Main2Activity.this)
                        .setTitle("修改内容")
                        .setView(view1)
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                String name = alert_name.getText().toString();
                                String publish = alert_publish.getText().toString();
                                Book book = bookDao.queryBuilder().where(BookDao.Properties.Id.eq(list.get(position).getId())).build().unique();
                                book.setName(name);
                                book.setPublish(publish);
                                bookDao.update(book);
                                List<Book> bookList = bookDao.queryBuilder().build().list();
                                list.clear();
                                list.addAll(bookList);
                                adapter.notifyDataSetChanged();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                            }
                        })
                        .show();

            }
        });
        return false;
    }
}
第三个-----------------------------------------------
package com.example.dell.shujukulianxi2;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.List;

public class Main3Activity extends AppCompatActivity implements View.OnClickListener {

    private EditText edit_name;
    private EditText edit_publish;
    private Button btn1;
    private Button btn2;
    private String name;
    private String publish;
    private long id;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        initView();
    }

    private void initView() {
        edit_name = (EditText) findViewById(R.id.edit_name);
        edit_publish = (EditText) findViewById(R.id.edit_publish);
        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);

        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
    }



    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn1:
                submit();
                BookDao bookDao = DateOpenHelper.getDateOpenHelper().getWriter(getApplicationContext(), "book.db");
                List<Book> list = bookDao.queryBuilder().build().list();
                Book book = new Book(null, name, publish);
                if (!list.contains(book)) {
                    bookDao.insert(book);
                } else {
                    return;

                }
                startActivity(new Intent(Main3Activity.this, Main2Activity.class));
                finish();
                break;
            case R.id.btn2:
                startActivity(new Intent(Main3Activity.this, Main2Activity.class));
                finish();
                break;
        }
    }

    private void submit() {
        // validate
        name = edit_name.getText().toString().trim();
        if (TextUtils.isEmpty(name)) {
            Toast.makeText(this, "name不能为空", Toast.LENGTH_SHORT).show();
            return;
        }

        publish = edit_publish.getText().toString().trim();
        if (TextUtils.isEmpty(publish)) {
            Toast.makeText(this, "publish不能为空", Toast.LENGTH_SHORT).show();
            return;
        }

        // TODO validate success, do something


    }
}

数据库封装--------------
package com.example.dell.shujukulianxi2;

import android.content.Context;

public class DateOpenHelper {
    private static DateOpenHelper dateOpenHelper;

    private DateOpenHelper() {
    }

    public static synchronized DateOpenHelper getDateOpenHelper() {
        if (dateOpenHelper == null) {
            synchronized (DateOpenHelper.class) {
                dateOpenHelper = new DateOpenHelper();
            }
        }
        return dateOpenHelper;
    }


    public BookDao getWriter(Context context, String tableName) {

        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(context, tableName, null);

        DaoMaster daoMaster = new DaoMaster(devOpenHelper.getReadableDb());

        DaoSession daoSession = daoMaster.newSession();

        BookDao daoSessionBookDao = daoSession.getBookDao();

        return daoSessionBookDao;

    }
}

//***************************************
适配器
package com.example.dell.shujukulianxi2;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MyAdapter extends BaseAdapter {
    private Context context;
    private List<Book> list = new ArrayList<>();

    public MyAdapter(Context context, List list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView == null) {
            viewHolder = new ViewHolder();
            convertView = View.inflate(context, R.layout.item, null);
            //找控件
            viewHolder.image = (ImageView) convertView.findViewById(R.id.item_image);
            viewHolder.name = (TextView) convertView.findViewById(R.id.item_name);
            viewHolder.publish = (TextView) convertView.findViewById(R.id.item_publish);
            convertView.setTag(viewHolder);

        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        //赋值
        viewHolder.name.setText(list.get(position).getName());
        viewHolder.publish.setText(list.get(position).getPublish());
        return convertView;
    }

    static class ViewHolder {
        //控件对象
        ImageView image;
        TextView name;
        TextView publish;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值