Как сохранить список по элементам в объекте Singleton в Kotlin - PullRequest
0 голосов
/ 15 мая 2019

У меня есть класс Singleton, в котором у меня есть два метода: один для сохранения элементов в одноэлементном списке и другой для получения всех сохраненных продуктов.Обратите внимание, что продукты будут сохраняться один за другим.

Моя проблема заключается в том, что я всегда сохраняю последний элемент и имею только один в синглтоне.Как я могу сделать это, чтобы сохранить все элементы, которые я хочу вставить в синглтон.

class VoucherRepository {

    object Singleton {
        var vouchers: MutableList<Product> = mutableListOf<Product>()
    }


    fun addProductToShoppingCart(voucherProduct: Product){
        Singleton.vouchers.add(voucherProduct)
    }

    fun getProductsInShoppinCart() : List<Product>?{
        return Singleton.vouchers
    }
}

ОБНОВЛЕНИЕ

class ProductRepository {

    companion object Singleton {
        var vouchers: MutableList<Product> = mutableListOf<Product>()

        fun addProductToShoppingCart(voucherProduct: Product){
            vouchers.add(voucherProduct)
        }

        fun getProductsInShoppinCart() : List<Product>?{
            return vouchers
        }

        fun cleanProductsInShoppinCart(){
            vouchers.clear()
        }
    }
}

1 Ответ

0 голосов
/ 15 мая 2019

Не могли бы вы показать пример кода? Я не смог воспроизвести проблему.

fun main(args: Array<String>) {
    println("Hello, world!")
    val repo = VoucherRepository()

    println(VoucherRepository.Singleton.vouchers) // []
    repo.addProductToShoppingCart("aaa")
    println(VoucherRepository.Singleton.vouchers) // [aaa]
    repo.addProductToShoppingCart("bbb")
    println(VoucherRepository.Singleton.vouchers) // [aaa, bbb]

    VoucherRepository().addProductToShoppingCart("ccc")
    println(VoucherRepository.Singleton.vouchers) // [aaa, bbb, ccc]
    println(repo.getProductsInShoppinCart()) // [aaa, bbb, ccc]
    println(VoucherRepository().getProductsInShoppinCart()) // [aaa, bbb, ccc]

}

class VoucherRepository {

    object Singleton {
        var vouchers: MutableList<String> = mutableListOf()
    }


    fun addProductToShoppingCart(voucherProduct: String) {
        Singleton.vouchers.add(voucherProduct)
    }

    fun getProductsInShoppinCart() : List<String> {
        return Singleton.vouchers
    }
}

Похоже, ваш синглтон каким-то образом был освобожден из памяти и инициализирован снова и снова, но без кода я не могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...