首先创建数据库存放数据
public class LikePeise extends LitePalSupport implements Parcelable {
private String title ;
private int image;
private boolean collect;
public LikePeise(String title, int image, boolean collect) {
this.title = title;
this.image = image;
this.collect = collect;
}
public LikePeise() {
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
public boolean isCollect() {
return collect;
}
public void setCollect(boolean collect) {
this.collect = collect;
}
protected LikePeise(Parcel in) {
title = in.readString();
collect = in.readByte() != 0;
image = in.readInt();
}
public static final Creator<LikePeise> CREATOR = new Creator<LikePeise>() {
@Override
public LikePeise createFromParcel(Parcel in) {
return new LikePeise(in);
}
@Override
public LikePeise[] newArray(int size) {
return new LikePeise[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeByte((byte) (collect ? 1 : 0));
dest.writeByte((byte) (collect ? 1 : 0));
dest.writeString(title);
dest.writeInt(image);
}
public boolean saveOrUpdate() {
if (TextUtils.isEmpty(title)) {
return false;
}
return super.saveOrUpdate("title=?", title);
}
}
创建查询方法
public List<LikePeise> findCollects(String title) {
return LitePal.where("title = ? ", title).find(LikePeise.class);
// return LitePal.where("collect = ? ", "1").find(LikePeise.class);
}
将查询到的数据存放集合并赋值
//将收藏的数据存入到集合中
List<LikePeise> collects = findCollects(peise.getTitle());
//将数据赋值
if (collects.isEmpty()) {
likePeise = new LikePeise(peise.getTitle(), peise.getImage(), false);
} else {
likePeise = collects.get(0);
}
然后
//通过判断是否收藏来设置收藏按钮状态
binding.shoucang.setChecked(likePeise.isCollect());
binding.shoucang.setOnCheckedChangeListener((buttonView, isChecked) -> {
Log.d(TAG, "shoucang: " + isChecked);
if (null != likePeise) {
likePeise.setCollect(isChecked);
likePeise.saveOrUpdate();
}
});
最后将数据更新