activity_main布局
RecycleView布局
点击+按钮后要用到的自定义对话框
点击修改之后要用到的对话框
ackage com.example.mobile1920605114zyh0510homeword;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class Myapadter extends RecyclerView.Adapter<Myapadter.MyHoler> {
private List<Student> list;
public Myapadter(List<Student> list) {
this.list = list;
}
//定义打开接口
OnClickInterface onClickInterface;
interface OnClickInterface {
void onClick(View view, int position);
}
public void setOnClickInterface(OnClickInterface onClickInterface ) {
this.onClickInterface = onClickInterface;
}
static class MyHoler extends RecyclerView.ViewHolder {
TextView tvSno, tvName, tvSex, tvRoom;
Button btnUpdate, btndelete;
public MyHoler(@NonNull View itemView) {
super(itemView);
tvSno = itemView.findViewById(R.id.tvItemSno);
tvName = itemView.findViewById(R.id.tvItemName);
tvSex = itemView.findViewById(R.id.tvItemSex);
tvRoom = itemView.findViewById(R.id.tvItemRoom);
btnUpdate = itemView.findViewById(R.id.btnItemUpdate);
btndelete = itemView.findViewById(R.id.btnItemdelete);
}
}
@NonNull
@Override
public Myapadter.MyHoler onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_rv_main_student, parent, false);
MyHoler holer = new MyHoler(view);
return holer;
}
@Override
public void onBindViewHolder(@NonNull MyHoler holder, final int position) {
Student student = list.get(position);
holder.tvRoom.setText(student.getRoom());
holder.tvSex.setText(student.getSex());
holder.tvName.setText(student.getName());
holder.tvSno.setText(student.getSno());
//按钮监听
holder.btnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onClickInterface != null) {
onClickInterface.onClick(v,position);
}
}
});
holder.btndelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onClickInterface != null) {
onClickInterface.onClick(v,position);
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
}
实体类代码
package com.example.mobile1920605114zyh0510homeword;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Generated;
@Entity //表示这个实体类会在数据库中生成对应的表
public class Student {
@Id(autoincrement = true)//对应数据库表中的id列,可设置自增1
private Long id;
@NotNull//不允许为空
private String sno,name,sex, room;
//添加无属性构造方法:
public Student(String sno, String name, String sex, String room) {
this.sno = sno;
this.name = name;
this.sex = sex;
this.room = room;
}
@Generated(hash = 1110990331)
public Student(Long id, @NotNull String sno, @NotNull String name,
@NotNull String sex, @NotNull String room) {
this.id = id;
this.sno = sno;
this.name = name;
this.sex = sex;
this.room = room;
}
@Generated(hash = 1556870573)
public Student() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getSno() {
return this.sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getRoom() {
return this.room;
}
public void setRoom(String room) {
this.room = room;
}
}
MainActivity代码
**//MainActivity**
package com.example.mobile1920605114zyh0510homeword;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RadioButton;
import android.widget.TextView;
import org.greenrobot.greendao.database.Database;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class MainActivity extends AppCompatActivity {
Student student;
private TextView tvMainTitle;
private ImageButton btnMainAdd;
private TextView tvMainSno;
private TextView tvMainName;
private TextView tvMainSex;
private TextView tvMainRoom;
private RecyclerView rvMainDemo;
List<Student> list = new ArrayList<>();//创建集合
StudentDao studentDao;
private String sno, name, room,sex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setStudentDaoFuZhi();
XianShi();
setBtnMainAdd(btnMainAdd);
xiushan();
}
//通过FindViewByMe初始化控件
private void initView() {
tvMainTitle = findViewById(R.id.tvMainTitle);
btnMainAdd = findViewById(R.id.btnMainAdd);
tvMainSno = findViewById(R.id.tvMainSno);
tvMainName = findViewById(R.id.tvMainName);
tvMainSex = findViewById(R.id.tvMainSex);
tvMainRoom = findViewById(R.id.tvMainRoom);
rvMainDemo = findViewById(R.id.rvMainDemo);
}
//定义数据打开帮助对象,指定数据库名称
private void setStudentDaoFuZhi() {
//定义数据打开帮助对象,指定数据库名称
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "school.dp");
//定义数据库对象
Database database = devOpenHelper.getWritableDb();
//定义Session会话对象
DaoSession daoSession = new DaoMaster(database).newSession();
studentDao = daoSession.getStudentDao();
}
//添加按钮
public void setBtnMainAdd(ImageButton btnMainAdd) {
this.btnMainAdd = btnMainAdd;
btnMainAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 自定义对话框
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.add_main, null, false);
final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).setView(view).create();
final EditText edtSco = view.findViewById(R.id.edtAddSno);
final EditText edtName = view.findViewById(R.id.edtAddName);
final EditText edtRoom = view.findViewById(R.id.edtAddRoom);
final RadioButton radboy = view.findViewById(R.id.radAddBoy);
final RadioButton radgirl = view.findViewById(R.id.radAddGirl);
final Button btnCancel = view.findViewById(R.id.btnAddcancle);
Button btnSure = view.findViewById(R.id.btnAddSure);
dialog.setTitle("新增");//设置标题
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();//关闭对话框
}
});
btnSure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sno = edtSco.getText().toString().trim();
name = edtName.getText().toString().trim();
room = edtRoom.getText().toString().trim();
sex = "男";
//多选框
if (radboy.isChecked()) {
sex = radboy.getText().toString();
} else if (radgirl.isChecked()) {
sex = radgirl.getText().toString();
}
student = new Student(sno, name, sex, room);
Long result = studentDao.insert(student);
if (result>0){
Log.i("TAG", "成功添加数据");
}else {
Log.i("TAG", "添加数据异常");
}
list.clear();
list.addAll(studentDao.loadAll());
rvMainDemo.getAdapter().notifyDataSetChanged();
dialog.dismiss();
}
});
dialog.create();
dialog.show();//显示对话框
}
});
}
//rv显示
public void XianShi(){
list = studentDao.loadAll();
for (int i = 0; i < list.size(); i++) {
Long id = list.get(i).getId();
Log.i("TAG", "select:" + id);
}
rvMainDemo.setLayoutManager(new LinearLayoutManager(this));
Myapadter myapadter = new Myapadter(list);
rvMainDemo.setAdapter(myapadter);
// rvMainDemo.setAdapter(new Myapadter(list));
}
//设置rv中的修改按钮
public void xiushan(){
((Myapadter)rvMainDemo.getAdapter()).setOnClickInterface(new Myapadter.OnClickInterface() {
@Override
public void onClick(View view, int position) {
final Student stu = list.get(position);
student = studentDao.queryBuilder().where(StudentDao.Properties.Id.eq(stu.getId())).unique();
switch (view.getId()) {
case R.id.btnItemUpdate:
//自定义对话框
View updataView = LayoutInflater.from(MainActivity.this).inflate(R.layout.updata, null, false);
//声明变量
final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).setView(updataView).create();
final TextView tvtitle = updataView.findViewById(R.id.tvUpdataTitle);
final EditText edtname = updataView.findViewById(R.id.edtUpdataName);
final EditText edtroom = updataView.findViewById(R.id.edtUpdataRoom);
final Button btndeler = updataView.findViewById(R.id.btnUpdataDeler);
final Button btnsure = updataView.findViewById(R.id.btnUpdataSure);
final RadioButton radboy = updataView.findViewById(R.id.RadUpdataBoy);
final RadioButton radgirl = updataView.findViewById(R.id.RadUpdataGirl);
tvtitle.setText("修改" + stu.getSno() + "的信息");
edtname.setText(stu.getName());
edtroom.setText(stu.getRoom());
Log.i("TAG", "onClick: "+stu.getSex());
if (stu.getSex().equalsIgnoreCase("男")){
radboy.setChecked(true);
} else{
radgirl.setChecked(true);
}
btnsure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stu.setName(edtname.getText().toString().trim());
stu.setRoom(edtroom.getText().toString().trim());
if (radboy.isChecked()) {
stu.setSex(radboy.getText().toString());
} else if (radgirl.isChecked()){
stu.setSex(radgirl.getText().toString());
}
studentDao.update(student);//将数据更新到student
list.clear();
list.addAll(studentDao.loadAll());
rvMainDemo.getAdapter().notifyDataSetChanged();
dialog.dismiss();
}
});
btndeler.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Log.i("TAG", "onClick: "+"点击了一次按钮");
dialog.create();
dialog.show();
break;
case R.id.btnItemdelete:
new AlertDialog.Builder(MainActivity.this)
.setMessage("删除" + stu.getSno() + stu.getName() + "的信息")
.setNeutralButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (stu != null) {
studentDao.delete(stu);
dialog.dismiss();
list.clear();
list.addAll(studentDao.loadAll());
rvMainDemo.getAdapter().notifyDataSetChanged();
}
}
}).create()
.show();
}
});
}
}