У меня есть простая кнопка в моем обзоре утилит, когда при первом нажатии она должна сделать текст редактируемым, при повторном нажатии она должна подтвердить изменение.У меня проблема в том, что у меня настроены два onClickListener, но они ссылаются друг на друга, и нижний всегда может разрешить верхний, а верхний не может разрешить нижний.
Recyclerview: bindIngredient
fun bindIngredient(ingredient: ListIngredientsQuery.Item, clickListener: RecyclerViewClickListener) {
val ocl1 = View.OnClickListener{
//Text Editable
view.ingEditText.setText(view.ingNameTV.text.toString())
view.ingNameTV.visibility = View.GONE
view.ingEditText.visibility = View.VISIBLE
view.ingEditButton.text = "Confirm"
view.ingEditButton.setOnClickListener(ocl2)
}
var ocl2 = View.OnClickListener {
//Text Not Editable
view.ingNameTV.text = view.ingEditText.text
view.ingEditText.visibility = View.GONE
view.ingNameTV.visibility = View.VISIBLE
view.ingEditButton.setOnClickListener(ocl1)
clickListener.onConfirmSelect(ingredient)
}
this.ingredient = ingredient
view.ingNameTV.text = ingredient.name()
view.ingEditButton.setOnClickListener(ocl1)
view.veganSpinner.setSelection(Vegan.valueOf(ingredient.vegan().toString()).ordinal, false)
view.gfSpinner.setSelection(GlutenFree.valueOf(ingredient.glutenfree().toString()).ordinal, false)
}
В этом примере строка
view.ingEditButton.setOnClickListener(ocl2)
error, поскольку ocl2 не разрешена.Если я переключаю порядок двух объявляемых и инициализируемых onClickListener, строка
view.ingEditButton.setOnClickListener(ocl1)
выдает ошибку, поскольку ocl1 разрешен.Я полагаю, это означает, что он не будет смотреть вниз, чтобы найти то, что ему нужно, он будет полагаться только на объекты, которые уже были инициализированы.
Есть ли способ исправить это?Есть лучший способ сделать это?Я испытываю желание просто поместить две кнопки в одно и то же место, дать им каждый свой onclicklistener и поменять местами их видимость, но это кажется пустой тратой ресурсов.