GreenDao数据库

依赖与文件配置

// In your root build.gradle file: 根目录

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
}

android

greendao{
    schemaVersion 1
    daoPackage 'com.jiyun.com.greendao'
    targetGenDir 'src/main/java'
}

数据库实体类User

//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;
}

全部配置完成:

Build 选项里的==》 Rebuild Project

编译项目,User实体类会自动编译,生成get、set方法并且会在com.jiyun.greendao.gen目录下生成三个文件;

------------------------------------------------------------------------------------------------------------

数据库类

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;
    }
}

//清单文件

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>

转载于:https://my.oschina.net/u/3698786/blog/1548769

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值