Android 选择后,清除/删除所有动态添加的弹出菜单项
我在这里有搜索字段,我正在搜索一些值和绑定数组,从服务器到弹出菜单项,以显示弹出窗口,第一次正确绑定时,每当我选择项目弹出窗口将关闭并尝试搜索另一个值,然后以前添加的项目也绑定在同一弹出窗口中。如何删除所有项目,或者如何为每次搜索创建单个视图Android 选择后,清除/删除所有动态添加的弹出菜单项,android,kotlin,popupmenu,android-popupwindow,Android,Kotlin,Popupmenu,Android Popupwindow,我在这里有搜索字段,我正在搜索一些值和绑定数组,从服务器到弹出菜单项,以显示弹出窗口,第一次正确绑定时,每当我选择项目弹出窗口将关闭并尝试搜索另一个值,然后以前添加的项目也绑定在同一弹出窗口中。如何删除所有项目,或者如何为每次搜索创建单个视图 popup = PopupMenu(this@AddReportActivity, search_diagnosis) popup?.menuInflater?.inflate(R.menu.test_menu, popup?.menu)
popup = PopupMenu(this@AddReportActivity, search_diagnosis)
popup?.menuInflater?.inflate(R.menu.test_menu, popup?.menu)
search_diagnosis.setActivated(true);
search_diagnosis.setQueryHint("Search the diagnosis");
search_diagnosis.onActionViewExpanded();
search_diagnosis.setIconified(false);
search_diagnosis.clearFocus();
search_diagnosis.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
query?.let { callSearch(it) }
return false
}
override fun onQueryTextChange(newText: String?): Boolean {
return false
}
})
private fun callSearch(it: String) {
val diagnosisBody = DiagnosisBody(it)
viewModel.getDiseaseList(diagnosisBody).observe(this, Observer {
when (it) {
is ResultWrapper.Success -> {
it.value.data?.forEachIndexed { i, item ->
popup?.menu?.add(
R.id.diagnosis_menu_items_group,
i,
Menu.NONE,
item.name
);
}
popup?.setOnMenuItemClickListener { item ->
search_diagnosis.setQuery(item.title, false);
popup?.menu?.clear()
it.value.data?.forEachIndexed { i, item ->
popup?.menu?.removeItem(i)
}
popup?.menu?.removeGroup(R.id.diagnosis_menu_items_group)
this.invalidateOptionsMenu();
//popup = null
popup?.dismiss();
Toast.makeText(
this@AddReportActivity,
"You Clicked : " + item.title,
Toast.LENGTH_SHORT
).show()
true
}
popup?.show()
}
is ResultWrapper.NetworkError -> {
Log.v(TAG, "Network Error")
}
is ResultWrapper.GenericError -> {
val errResp: ErrorResponse? = it.error
Toast.makeText(this, errResp?.error, Toast.LENGTH_SHORT).show()
Log.v(TAG, "Generic error->" + it.error.toString())
}
}
})
}
我已尝试使用removeItem(I)和popup?.menu?.removeGroup(R.id.diagnosis\u menu\u items\u group)删除id,但未删除
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/diagnosis_menu_items_group"
android:checkableBehavior="all">
</group>
</menu>