Как я могу изменить значение хранимой sharedPreference с помощью onClickButton? - PullRequest
0 голосов
/ 10 июня 2019

Я создал класс DTO, который будет храниться в SharedPreference при обращении к API. Я хочу изменить значение переменной PromotionBtnClosed на кнопке закрытия onClick, и в следующий раз, когда приложение откроется, этот элемент будет принимать значение из sharedPreference, а не из DTO.

 @OnClick(R.id.btnClose)
    fun onClickClose() {
       getBoolean(MERCHANT_PROMOTION, false)
       putBoolean(MERCHANT_PROMOTION, true)
        dismiss()


    }

@Parcelize
@JsonIgnoreProperties(ignoreUnknown = true)
open class MerchantPromotionDTO(

        @JsonProperty("image") var image: ImageUrlsDTO? = null,
        @JsonProperty("cta") var cta: CTADTO? = null,
        @JsonProperty("probability") var probability: Int? = 0,
        @JsonProperty("isDismissible") var isDismissible: Boolean? = true,
        @JsonProperty("showImmediate") var showImmediate: Boolean? = false,
        @JsonProperty("promotionBtnClosed") var promotionBtnClosed: Boolean = false
) : BaseResponseDTO()





 const val MERCHANT_PROMOTION = "merchantPromotion"

    private fun editPreference(editorMethod: (SharedPreferences.Editor) -> Unit) {
        val editor = App.instance?.getSharedPreferences(App.instance?.packageName, Activity.MODE_PRIVATE)?.edit()
        editor?.run {
            editorMethod(editor)
            editor.apply()
        }
    }

    private fun <T> getPreference(getMethod: (SharedPreferences) -> T?, defaultValue: T?): T? {
        val sharedPreferences = App.instance?.getSharedPreferences(App.instance?.packageName, Activity.MODE_PRIVATE)
        return sharedPreferences?.run(getMethod) ?: defaultValue
    }

    fun putBoolean(key: String, value: Boolean) {
        editPreference { it.putBoolean(key, value) }
    }





    fun setPromotionData(promotionData: String) {
        putString(MERCHANT_PROMOTION, promotionData)
    }

    fun getPromotionData(): MerchantPromotionDTO {
        return CommonUtils.getClassUsingDeserializer(getString(MERCHANT_PROMOTION, null), MerchantPromotionDTO())
                ?: MerchantPromotionDTO()
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...