Я хочу сбросить значение и сделать его пустой строкой при выборе нового местоположения.
Я попробовал сбросить значение следующим образом:
* *tower.value = ""
floorNumber.value = ""**
но на стороне пользовательского интерфейса значение остается**Это раскрывающееся меню
**
@Composable
fun DropDownBox(
items:List,
onItemSelected: (String) -> Unit,
textFieldLabel:String,
modifier: Modifier = Modifier,
) {
var expanded by remember { mutableStateOf(false) }
var selectedText by remember { mutableStateOf("") }
var textfieldSize by remember { mutableStateOf(Size.Zero) }
val icon = if (expanded)
Icons.Filled.ArrowDropUp //it requires androidx.compose.material:material-icons-extended
else
Icons.Filled.ArrowDropDown
Log.d("select", "$selectedText")
Column() {
OutlinedTextField(
textStyle = TextStyle(
fontFamily = mont,
color = Color.Black),
shape = RoundedCornerShape(15.dp),
value = selectedText,
onValueChange = {
selectedText = it },
modifier = Modifier
.fillMaxWidth()
.onGloballyPositioned { coordinates ->
//This value is used to assign to the DropDown the same width
textfieldSize = coordinates.size.toSize()
},
label ={ Text(textFieldLabel,
fontSize = 15.sp,
fontWeight = FontWeight.Normal,
fontFamily = mont
)
},
trailingIcon = {
Icon(icon,"contentDescription",
Modifier.clickable { expanded = !expanded })
},
readOnly = true,
)
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
modifier = Modifier
.width(with(LocalDensity.current){textfieldSize.width.toDp()})
) {
items.sorted().forEach { label ->
DropdownMenuItem(onClick = {
selectedText = label
onItemSelected(selectedText)
expanded = false
}) {
Text(text = label,
fontSize = 15.sp,
fontWeight = FontWeight.Normal,
fontFamily = mont
)
}
}
}
}
}
У меня есть раскрывающийся список для местоположения, башни и номера этажа. Я хочу, чтобы, если я выберу новое местоположение, значение номера башни и этажа будет сброшено до пустой строки. Я уже пробовал этот код, но единственное изменение — это значение, а не сам пользовательский интерфейс. поэтому я пытаюсь отладить этот код, пожалуйста, помогите мне с моим кодом
var isLocationSelected by remember { mutableStateOf(false) }
var isTowerSelected by remember { mutableStateOf(false) }
var isFloorSelected by remember { mutableStateOf(false) }
Log.d("LOCATION", "$location")
DropdownTextField(
items = locationsMap.map {
it.key
},
onItemSelected = {
if (locationErrorState.value) {
locationErrorState.value = false
}
location.value = it
isLocationSelected = true
isTowerSelected = false
isFloorSelected = false
tower.value = ""
floorNumber.value = ""
unitNumber.value = ""
unitNumberSuffx.value = ""
/* Populate towers dropdown list */
var towersList:MutableList = ArrayList()
towers.value = towersList
var suffixList:MutableList = ArrayList()
suffix.value = suffixList
val building = locationsMap[location.value]
building?.let {
it.map {
it.towerName?.let {
towersList.add(it)
}
it.unitNumberSuffix.let {
it?.let {
it.map {
suffixList.add(it)
}
}
}
}
}
if (!towersList.isEmpty()) {
towers.value = towersList
} else {
building?.let {
val maxFloorNumber = it.first().floorNumber
val maxUnit = it.first().unitsPerFloor
var unitList: MutableList = ArrayList()
var floorsList: MutableList = ArrayList()
for (n in 1..maxFloorNumber.toInt()) {
floorsList.add(n.toString())
}
for (n in 1..maxUnit) {
// Add "0" in the middle for unit numbers 1-9
val formattedUnit = if (n in 1..9) "0$n" else n.toString()
unitList.add(formattedUnit)
}
unitNumbers.value = unitList
floors.value = floorsList
}
}
if (!suffixList.isEmpty()) {
suffix.value = suffixList.distinct()
}
},
textFieldLabel = "Location",
)
Log.d("TOWER", "$tower")
if (isLocationSelected && towers.value.count() >= 1) {
Spacer(modifier = Modifier.height(8.dp))
DropdownTextField(items = towers.value,
onItemSelected = {
if (towerErrorState.value) {
towerErrorState.value = true
}
tower.value = it
isTowerSelected = true
isFloorSelected = false
floorNumber.value = ""
/*
Update floors
*/
val building = locationsMap[location.value]
building?.let {
it.map {
if (it.towerName == tower.value) {
val maxFloorNumber = it.floorNumber
val maxUnit = it.unitsPerFloor
var unitList:MutableList = ArrayList()
var floorsList:MutableList = ArrayList()
for(n in 1..maxFloorNumber.toInt()) {
floorsList.add(n.toString())
}
for (n in 1..maxUnit) {
// Add "0" in the middle for unit numbers 1-9
val formattedUnit = if (n in 1..9) "0$n" else n.toString()
unitList.add(formattedUnit)
}
unitNumbers.value = unitList
floors.value = floorsList
}
}
}
},
textFieldLabel = "Tower",
)
}
Spacer(modifier = Modifier.height(8.dp))
Log.d("FLOOR", "$floorNumber")
if (isLocationSelected || isTowerSelected) {
DropDownBox(
items = floors.value,
onItemSelected = {
if (floorNumberErrorState.value) {
floorNumberErrorState.value = false
}
Log.d("TEST", "$it")
floorNumber.value = it
isFloorSelected = true
unitNumber.value = ""
},
textFieldLabel = stringResource(R.string.FloorNumber),
)
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... pty-string
Сбросить значение раскрывающегося меню и сделать его пустой строкой ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1710729247
Anonymous
Я хочу сбросить значение и сделать его пустой строкой при выборе нового местоположения.
Я попробовал сбросить значение следующим образом:
* *tower.value = ""
floorNumber.value = ""**
но на стороне пользовательского интерфейса значение остается**Это раскрывающееся меню
**
@Composable
fun DropDownBox(
items:List,
onItemSelected: (String) -> Unit,
textFieldLabel:String,
modifier: Modifier = Modifier,
) {
var expanded by remember { mutableStateOf(false) }
var selectedText by remember { mutableStateOf("") }
var textfieldSize by remember { mutableStateOf(Size.Zero) }
val icon = if (expanded)
Icons.Filled.ArrowDropUp //it requires androidx.compose.material:material-icons-extended
else
Icons.Filled.ArrowDropDown
Log.d("select", "$selectedText")
Column() {
OutlinedTextField(
textStyle = TextStyle(
fontFamily = mont,
color = Color.Black),
shape = RoundedCornerShape(15.dp),
value = selectedText,
onValueChange = {
selectedText = it },
modifier = Modifier
.fillMaxWidth()
.onGloballyPositioned { coordinates ->
//This value is used to assign to the DropDown the same width
textfieldSize = coordinates.size.toSize()
},
label ={ Text(textFieldLabel,
fontSize = 15.sp,
fontWeight = FontWeight.Normal,
fontFamily = mont
)
},
trailingIcon = {
Icon(icon,"contentDescription",
Modifier.clickable { expanded = !expanded })
},
readOnly = true,
)
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
modifier = Modifier
.width(with(LocalDensity.current){textfieldSize.width.toDp()})
) {
items.sorted().forEach { label ->
DropdownMenuItem(onClick = {
selectedText = label
onItemSelected(selectedText)
expanded = false
}) {
Text(text = label,
fontSize = 15.sp,
fontWeight = FontWeight.Normal,
fontFamily = mont
)
}
}
}
}
}
У меня есть раскрывающийся список для местоположения, башни и номера этажа. Я хочу, чтобы, если я выберу новое местоположение, значение номера башни и этажа будет сброшено до пустой строки. Я уже пробовал этот код, но единственное изменение — это значение, а не сам пользовательский интерфейс. поэтому я пытаюсь отладить этот код, пожалуйста, помогите мне с моим кодом
var isLocationSelected by remember { mutableStateOf(false) }
var isTowerSelected by remember { mutableStateOf(false) }
var isFloorSelected by remember { mutableStateOf(false) }
Log.d("LOCATION", "$location")
DropdownTextField(
items = locationsMap.map {
it.key
},
onItemSelected = {
if (locationErrorState.value) {
locationErrorState.value = false
}
location.value = it
isLocationSelected = true
isTowerSelected = false
isFloorSelected = false
tower.value = ""
floorNumber.value = ""
unitNumber.value = ""
unitNumberSuffx.value = ""
/* Populate towers dropdown list */
var towersList:MutableList = ArrayList()
towers.value = towersList
var suffixList:MutableList = ArrayList()
suffix.value = suffixList
val building = locationsMap[location.value]
building?.let {
it.map {
it.towerName?.let {
towersList.add(it)
}
it.unitNumberSuffix.let {
it?.let {
it.map {
suffixList.add(it)
}
}
}
}
}
if (!towersList.isEmpty()) {
towers.value = towersList
} else {
building?.let {
val maxFloorNumber = it.first().floorNumber
val maxUnit = it.first().unitsPerFloor
var unitList: MutableList = ArrayList()
var floorsList: MutableList = ArrayList()
for (n in 1..maxFloorNumber.toInt()) {
floorsList.add(n.toString())
}
for (n in 1..maxUnit) {
// Add "0" in the middle for unit numbers 1-9
val formattedUnit = if (n in 1..9) "0$n" else n.toString()
unitList.add(formattedUnit)
}
unitNumbers.value = unitList
floors.value = floorsList
}
}
if (!suffixList.isEmpty()) {
suffix.value = suffixList.distinct()
}
},
textFieldLabel = "Location",
)
Log.d("TOWER", "$tower")
if (isLocationSelected && towers.value.count() >= 1) {
Spacer(modifier = Modifier.height(8.dp))
DropdownTextField(items = towers.value,
onItemSelected = {
if (towerErrorState.value) {
towerErrorState.value = true
}
tower.value = it
isTowerSelected = true
isFloorSelected = false
floorNumber.value = ""
/*
Update floors
*/
val building = locationsMap[location.value]
building?.let {
it.map {
if (it.towerName == tower.value) {
val maxFloorNumber = it.floorNumber
val maxUnit = it.unitsPerFloor
var unitList:MutableList = ArrayList()
var floorsList:MutableList = ArrayList()
for(n in 1..maxFloorNumber.toInt()) {
floorsList.add(n.toString())
}
for (n in 1..maxUnit) {
// Add "0" in the middle for unit numbers 1-9
val formattedUnit = if (n in 1..9) "0$n" else n.toString()
unitList.add(formattedUnit)
}
unitNumbers.value = unitList
floors.value = floorsList
}
}
}
},
textFieldLabel = "Tower",
)
}
Spacer(modifier = Modifier.height(8.dp))
Log.d("FLOOR", "$floorNumber")
if (isLocationSelected || isTowerSelected) {
DropDownBox(
items = floors.value,
onItemSelected = {
if (floorNumberErrorState.value) {
floorNumberErrorState.value = false
}
Log.d("TEST", "$it")
floorNumber.value = it
isFloorSelected = true
unitNumber.value = ""
},
textFieldLabel = stringResource(R.string.FloorNumber),
)
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78177702/drop-down-menu-reset-value-and-make-it-empty-string[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия