Как создать список массивов внутри объекта области для приложения todo? - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу разработать приложение todo с базой данных realm. Я успешно создал список и отображается в представлении переработчика. но когда я пытаюсь добавить задачу в элементе просмотра переработчика. Я немного смущен. Я не знаю, как этого добиться.

например:

это мой класс 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();
            }
        });
    }

}

Вот мой вывод

My output like this

Теперь я хочу щелкнуть этот элемент внутри этого элемента, для которого я хочу добавить задачу, с флажком

например, вот так

I want to achieve like this

1 Ответ

0 голосов
/ 09 ноября 2018

И 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 при вставке / извлечении из базы данных.

...