Мой текущий проект Android содержит список элементов, и с каждым элементом связано контекстное меню.
Один из параметров, доступных в контекстном меню, изменяет состояние элемента списка. и мне также требуется, чтобы элемент контекстного меню также изменился.
Я могу обновить сам элемент списка, чтобы отразить изменение статуса
однако я не могу заставить элемент контекстного меню измениться обнаружить, что соответствующий элемент данных был изменен
мой код похож на этот в адаптере элемента списка: -
override fun getChildView(
groupPosition: Int,
childPosition: Int,
isLastChild: Boolean,
view: View?,
parent: ViewGroup
): View {
var convertView = view
@Suppress("UNCHECKED_CAST")
val section = getGroup(groupPosition) as StickySection
val myData = getChild(groupPosition, childPosition) as MyData
val holder: ChildViewHolder
if (convertView !is MyDataItemUi) {
convertView = MyDataItemUi(parent.context)
holder = ChildViewHolder(convertView)
convertView.setTag(holder)
} else {
holder = convertView.getTag() as ChildViewHolder
}
val isBelongsToCluster = section.sectionInfo.id != NOT_CLUSTERED_MYDATAS_SECTION_ID
holder.view.build(
myData, // THIS IS WHERE THE DATA ITEM IS SET
onMyDataDeletedCallback,
onMyDataProgressCompletedClickCallback,
onAllocateMyDataOnCanvasCallback,
isBelongsToCluster,
myDataCustomButton
)
setupClickListener(holder.view)
setupGeneralMyDataView(holder.view, myData)
return holder.view
}
Я прокомментировал, где измененный элемент данных myData передается в код, создающий элемент списка, а также передается в контекстное меню
как обновить элемент данных контекстного меню, чтобы пользовательский интерфейс отражал измененные данные?
ОБНОВЛЕНИЕ
Если макет элемента списка указан в XML, контекстное меню реализовано с использованием Android Compose. DropDownMenu и элементы, связанные с XML через это представление создания: -
контекстное меню управляется (отображается/скрывается) следующим образом: -
val showDropDownMenuState = MutableStateFlow(false)
ui.ivMyDataCustomButton.setOnClickListener {
showDropDownMenuState.value = true
onHMyDataCustomButtonClick(myDataCustomButton, showDropDownMenuState)
}
И вот как я создаю выпадающее меню
private fun onMyDataContextMenuClick(showDropDownMenuState: MutableStateFlow) {
ui.cvMyDataCustomButtonDdm.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
val showDropDownMenu by showDropDownMenuState.collectAsStateWithLifecycle()
MyDataItemSettingsDdm(
showDropDownMenu = showDropDownMenu,
myData = myData!!,
onMyDataAllocated = { myData?.let { onMyDataAllocatedCallback?.invoke(it) } },
onMyDataCompleted = {
myData?.let {
onMyDataProgressCompletedClickCallback?.onMyDataProgressCompleted(
it
)
}
},
onMyDataDeleted = {
if (!isReadOnly) {
val dialog = FDeleteItemUniversal()
.withTitle(context.getString(R.string.delete_myData_label))
.withMessage(context.getString(R.string.delete_myData))
dialog.setItemToDelete(myData)
onMyDataDeletedCallback?.let { dialog.setCallback(it) }
dialog.show(context.toAppActivity()?.supportFragmentManager)
} else {
context.err(R.string.myData_is_readonly)
}
},
onDismissRequest = {
showDropDownMenuState.value = false
}
)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ew-adapter
Как обновить контекстное меню элемента списка в адаптере просмотра списка Android ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как обновить контекстное меню элемента списка в адаптере просмотра списка Android
Anonymous » » в форуме Android - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-