使用GreenDao实现增删改查展示到RecyclerView上

首先导依赖比较麻烦,在app 的build依赖最前端复制

apply plugin: 'org.greenrobot.greendao'

然后在android{}目录里粘贴,需要注意的是里面的需要粘贴自己的目录,然后加一个点带上想要的文件名字

greendao {
    schemaVersion 1  //版本
    daoPackage 'com.example.administrator.greendao_demon.Dao' // 一般为app包名+生成文件的文件夹名
    targetGenDir 'src/main/java' //生成文件路径
}

然后是正常依赖

//greendao
compile 'org.greenrobot:greendao:3.1.0'
//butterknife
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
//recyclerview
implementation 'com.android.support:recyclerview-v7:27.1.1'

然后是在gradle目录下的build里面的dependencies目录下粘贴

 
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'

那么以上就是所有的依赖,

然后就是正片我们要先自己定义一个需要的文件类User,只需要写注解和定义名词就好了其他的一会讲如何自动生成

@Entity
public class User {
    @Id(autoincrement = true)
    private Long id;
    private String name;
    private String age;
    private String sex;
    private String salary;
    @Generated(hash = 1281958717)
    public User(Long id, String name, String age, String sex, String salary) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.salary = salary;
    }
    @Generated(hash = 586692638)
    public User() {
    }
    public Long getId() {
        return this.id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return this.age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getSex() {
        return this.sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getSalary() {
        return this.salary;
    }
    public void setSalary(String salary) {
        this.salary = salary;
    }
}

定义完需要的类之后点一下安卓死丢丢上面的小锤子就会自动生成Dao文件以及里面的三个类

然后是我的MainActivity

package com.example.administrator.greendao_demon.Main;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.bw.arp.greendemo.DaoMaster;
import com.bw.arp.greendemo.DaoSession;
import com.bw.arp.greendemo.UserDao;
import com.example.administrator.greendao_demon.R;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.et_name)
    EditText mEtName;
    @BindView(R.id.et_age)
    EditText mEtAge;
    @BindView(R.id.et_sex)
    EditText mEtSex;
    @BindView(R.id.et_salary)
    EditText mEtSalary;
    @BindView(R.id.et_id)
    EditText mEtId;
    @BindView(R.id.bt_insert)
    Button mBtInsert;
    @BindView(R.id.bt_select)
    Button mBtSelect;
    @BindView(R.id.bt_delete)
    Button mBtDelete;
    @BindView(R.id.bt_update)
    Button mBtUpdate;
    @BindView(R.id.rlv)
    RecyclerView mRlv;
    private UserDao userDao;
    private String name;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "pwk.db", null);
        DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        userDao = daoSession.getUserDao();
    }

    @OnClick({R.id.et_name, R.id.et_age, R.id.et_sex, R.id.et_salary, R.id.et_id, R.id.bt_insert, R.id.bt_select, R.id.bt_delete, R.id.bt_update, R.id.rlv})
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_insert:
                insert();
                break;
            case R.id.bt_select:
                select();
                break;
            case R.id.bt_delete:
                delete();
                break;
            case R.id.bt_update:
                update();
                break;
        }
    }

    private void update() {
//       List<User> user2 = userDao.queryBuilder()
//               .where(UserDao.Properties.Name.eq("刘阳洲")).build().list();
//       if (user2 == null){
//           Toast.makeText(this, "用户不存在", Toast.LENGTH_SHORT).show();
//       }else {
//           for (int i = 0;i<user2.size();i++){
//               user2.get(i).setName("二狗子");
//               userDao.update(user2.get(i));
//           }
//       }


        String id = mEtId.getText().toString().trim();
        long ids = Long.parseLong(id);


        String s = mEtName.getText().toString();
        String age = mEtName.getText().toString();
        String Salar = mEtSalary.getText().toString();
        String sex = mEtSex.getText().toString();
        User user = new User(ids,s,age,Salar,sex);
        userDao.update(user);

        Toast.makeText(this,"修改成功",Toast.LENGTH_SHORT).show();
        select();
    }

    private void delete() {
        String id = mEtId.getText().toString().trim();
        userDao.queryBuilder().where(UserDao.Properties.Id.eq(id)).buildDelete().executeDeleteWithoutDetachingEntities();
        Toast.makeText(this,"删除成功~",Toast.LENGTH_SHORT).show();
        select();
    }

    private void select() {
        List<User> users = userDao.loadAll();
        MyAdapter adapter = new MyAdapter(users, this);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        mRlv.setLayoutManager(linearLayoutManager);
        mRlv.setAdapter(adapter);
    }

    private void insert() {
        name = mEtName.getText().toString().trim();
        String age = mEtAge.getText().toString().trim();
        String sex = mEtSex.getText().toString().trim();
        String salary = mEtSalary.getText().toString().trim();
        if (name.isEmpty()&&age.isEmpty()&&sex.isEmpty()&&salary.isEmpty()){
            Toast.makeText(this,"请输入完整内容",Toast.LENGTH_SHORT).show();
        }else {


            User user = new User(null, name, age, sex, salary);
            long insert = userDao.insert(user);
            Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();

        }
    }
}

适配器MyAdapter

package com.example.administrator.greendao_demon.Main;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.administrator.greendao_demon.R;

import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> {
    private List<User> list;
    private Context context;

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

    @Override
    public MyAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.rlv_item,null);
        MyHolder holder = new MyHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(MyAdapter.MyHolder holder, int position) {
        holder.tv_content.setText("ID:"+list.get(position).getId()+"  名字:"+list.get(position).getName()+"  年龄:"+list.get(position).getAge()+"  性别:"+list.get(position).getSex()+"  薪资:"+list.get(position).getSalary());
    }

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

    public class MyHolder extends RecyclerView.ViewHolder {
        private final TextView tv_content;
        public MyHolder(View itemView) {
            super(itemView);
            tv_content = itemView.findViewById(R.id.tv_content);
        }
    }

}






 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值