Мне удалось получить сохраненные значения sharedPreferences. Но я не знаю, как заставить его ссылаться на текст, на который я нажимаю. В разделе // Close Alert Window
, когда я нажимаю кнопку ОК, чтобы изменить текст. ОК, закрывает диалоговое окно с предупреждением, а затем предположит добавить новую цену в список в sharedPreferences
.
В putString()
, если я использую putString("Price$it", input.text.toString()).apply
, похоже, он ничего не делает. Однако, если я использую "Price1"
любой текст, который я изменяю, сохраняется, и при повторном открытии приложение Price1
меняется на новую цену. Так что я знаю, что метод работает. я просто понятия не имею, как сохранить определенный текст, который я редактирую. Я надеюсь это имеет смысл. Спасибо за ваше время.
// Created Private Price List
val sharedPreferences = getSharedPreferences("priceList", Context.MODE_PRIVATE)
//Price
(1..912).forEach {
val id = resources.getIdentifier("Price$it", "id", packageName)
val tv = findViewById<TextView>(id)
tv.text = sharedPreferences.getString("Price$it","0.00")
}
(1..912).forEach {
val id = resources.getIdentifier("Price$it", "id", packageName)
val tv = findViewById<TextView>(id)
tv.setOnLongClickListener {
//Alert Window
val alertDialog = AlertDialog.Builder(this@MainActivity).create()
alertDialog.setTitle("NEW PRICE")
val input = EditText(this@MainActivity)
//Alert Submit on Enter
input.setOnKeyListener { v, keyCode, event ->
if (event.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
// Input changes text
tv.text = input.text
when {
tv.text.startsWith("-") -> tv.setTextColor(Color.RED)
tv.text.startsWith("+") -> tv.setTextColor(Color.GREEN)
else -> {
tv.text = "_"
tv.setTextColor(Color.DKGRAY)
}
}
// Close Alert Window
alertDialog.dismiss()
// TODO Save Price Table //THIS PART vvv
sharedPreferences.edit().putString("Price1", input.text.toString()).apply()
}
false
}
val lp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
input.layoutParams = lp
alertDialog.setView(input)
alertDialog.show()
return@setOnLongClickListener true
}
}