android - 如何在待办事项应用程序的领域对象内创建数组列表?
问题描述
我想用领域数据库开发待办事项应用程序。我已经成功创建了一个列表并显示在回收站视图中。但是当我尝试在回收站视图项中添加任务时。我有点困惑。我不知道如何实现这一点。
例如:
这是我的 POJO 课
import io.realm.RealmList;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
public class ShoppingModel extends RealmObject {
@PrimaryKey
private int id;
private String title;
private String items;
private String color;
private String date;
private String time;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getItems() {
return items;
}
public void setItems(String items) {
this.items = items;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
这是我的领域助手类
import android.util.Log;
import java.util.List;
import io.realm.Realm;
import io.realm.RealmList;
import io.realm.RealmResults;
public class RealmHelper {
Realm realm;
public RealmHelper(Realm realm){
this.realm = realm;
}
//save data to realm
public void save(final ShoppingModel shoppingModel){
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
if (realm!=null){
Log.e("Log", "Database was created " );
Number currentID = realm.where(ShoppingModel.class).max("id");
int nextId;
if (currentID == null){
nextId=1;
} else {
nextId = currentID.intValue() + 1;
}
shoppingModel.setId(nextId);
ShoppingModel s = realm.copyToRealm(shoppingModel);
} else {
Log.e("Log", "Database not exits " );
}
}
});
}
public List<ShoppingModel> getAllShoppingList(){
RealmResults<ShoppingModel> shopResult = realm.where(ShoppingModel.class).findAll();
return shopResult;
}
//update data to realm
public void update(final int id, final String title, final String items, final String color, final String date, final String time){
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
ShoppingModel shoppingModel = realm.where(ShoppingModel.class).equalTo("id",id)
.findFirst();
shoppingModel.setTitle(title);
shoppingModel.setItems(items);
shoppingModel.setTime(time);
shoppingModel.setDate(date);
shoppingModel.setColor(color);
}
}, new Realm.Transaction.OnSuccess(){
@Override
public void onSuccess() {
}
}, new Realm.Transaction.OnError(){
@Override
public void onError(Throwable error) {
error.printStackTrace();
}
});
}
// delete from realm
public void delete(final int id, final String title, final String items, final String color, final String date, final String time){
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
ShoppingModel shoppingModel = realm.where(ShoppingModel.class).equalTo("id",id)
.findFirst();
shoppingModel.setTitle(title);
shoppingModel.setItems(items);
shoppingModel.setTime(time);
shoppingModel.setDate(date);
shoppingModel.setColor(color);
shoppingModel.deleteFromRealm();
realm.commitTransaction();
}
}, new Realm.Transaction.OnSuccess(){
@Override
public void onSuccess() {
}
}, new Realm.Transaction.OnError(){
@Override
public void onError(Throwable error) {
error.printStackTrace();
}
});
}
}
这是我的输出
现在我想点击那个项目里面的那个项目我想用复选框添加任务
例如像这样
解决方案
List 和 ShoppingModel 都不能直接存储在 Realm 中。您需要为 ShoppingModel 创建一个模型对象,然后使用包含您的模型对象的 RealmList 对象。
public class ShoppingModel extends RealmObject {
public ShoppingModel() { }
@PrimaryKey
private int id;
private String title;
private String items;
private String color;
private String date;
private String time;
RealmList<ShoppingModelDetails> shoppingListDetails = new RealmList<ShoppingModelDetails>();
// getter setters are here.
}
ShoppingModelDetails 课程在这里 -
public class ShoppingModelDetails extends RealmObject {
public ShoppingModelDetails() { }
@PrimaryKey
private int id;
private String title;
private String items;
private String color;
private String date;
private String time;
// getter setters are here.
}
//将购物模型详细信息对象添加到 shoppingListDetails 并将其存储在您的 ShoppingList 对象中 当您从数据库中插入/检索时,您需要手动将 ShoppingModelDetails 类的对象转换为 ShoppingModel 类。
推荐阅读
- angular - 测试环境量角器:元素在点 (x, x) 处不可点击,其他元素将收到点击
- scala - Spark Streaming:跨批次聚合值
- json - ESP32 跳过 JSON 中的最后一个值
- vue.js - 引导下拉菜单需要哪些文件才能工作?
- ios - 如何访问 SecKeyCreateRandomKey() 生成的公钥中的字节?
- node.js - 如何将 NODE_EXTRA_CA_CERTS 的值传递给使用 Serverless 部署的 AWS Lambda?
- google-cloud-platform - BigQuery - “经过的时间”或“消耗的时间”,哪个是更好的衡量标准?
- c# - 使用 SSIS 将 CSV 文件拆分为 SQL 数据库表
- c# - 依赖属性的强制值未传播到目标或源
- linux - Raspberry Pi 蓝牙连接错误:“对等方重置连接”