如何解决选择后清除/删除动态添加的所有弹出菜单项
我在这里有搜索字段,我正在搜索一些值和从服务器到弹出菜单项的绑定数组以显示弹出窗口,第一次,无论何时我选择项弹出窗口,它的绑定正确都会消失,并尝试搜索另一个值,然后添加先前添加的项也绑定在同一弹出窗口中。如何删除所有项目,或者如何使每次搜索都变成单一视图。
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_menu_items_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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。