Ниже приведен мой XML-файл для макета нижнего листа
Код: Выделить всё
Код: Выделить всё
interface OrgUserFilterCallback { fun onOrgSelected(org: String) fun onUserSelected(user: String) fun onApplyChanges() fun onUpdateFilter() }
class BottomOrgUserFilter( initialOrgList: List, initialUserList: List, private val filterCallback: OrgUserFilterCallback? = null, private val context: Context ) : BottomSheetDialogFragment() {
private lateinit var binding: LayoutBottomsheetGeofenceLandingBinding
private var orgList: List = initialOrgList.map { it.name }
private var userList: List = initialUserList.map { it.name }
companion object {
const val TAG = "BottomOrgUserFilter"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = LayoutBottomsheetGeofenceLandingBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val bottomSheetBehavior = BottomSheetBehavior.from(view.parent as View)
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
bottomSheetBehavior.peekHeight = resources.displayMetrics.heightPixels
setupDropdowns()
setupListeners()
}
private fun setupListeners() {
binding.orgListFilterEdt.setOnItemClickListener { _, _, position, _ ->
filterCallback?.onOrgSelected(orgList[position])
}
binding.userListFilterEdt.setOnItemClickListener { _, _, position, _ ->
filterCallback?.onUserSelected(userList[position])
}
binding.cvApplyChanges.setOnClickListener {
filterCallback?.onApplyChanges()
dismiss()
}
binding.tvUpdateFilter.setOnClickListener {
filterCallback?.onUpdateFilter()
}
}
private fun setupDropdowns() {
val orgAdapter = ArrayAdapter(context, android.R.layout.simple_dropdown_item_1line, orgList)
binding.orgListFilterEdt.apply {
threshold = 0
setAdapter(orgAdapter)
}
val userAdapter = ArrayAdapter(context, android.R.layout.simple_dropdown_item_1line, userList)
binding.userListFilterEdt.apply {
threshold = 0
setAdapter(userAdapter)
}
}
fun setOrgList(newOrgList: List) {
if (isAdded) {
orgList = newOrgList
val orgAdapter = ArrayAdapter(context, android.R.layout.simple_dropdown_item_1line, orgList)
binding.orgListFilterEdt.setAdapter(orgAdapter)
orgAdapter.notifyDatasetChanged()
notifyAll()
}
}
fun setUserList(newUserList: List) {
if (isAdded) {
userList = newUserList
val userAdapter = ArrayAdapter(context, android.R.layout.simple_dropdown_item_1line, userList)
binding.userListFilterEdt.setAdapter(userAdapter)
userAdapter.notifyDatasetChanged()
binding.userListFilterEdt.isEnabled = true
}
}
Я пробовал внести все изменения, представленные в Интернете, но не добился успешного результата.< /p>
Я работал над внесением изменений в макет и родительский макет, но обходного пути все еще не было.
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/791 ... tomsheetdi
Мобильная версия