class
ExchangeListBottomSheet : BottomSheetDialogFragment() {
companion object {
const
val TAG =
"ExchangeModalBottomSheet"
}
private
val exchangeItems = arrayListOf<StockRowItem>()
override fun onAttach(context: Context) {
super
.onAttach(context)
requireNotNull(targetFragment)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? =
inflater.inflate(R.layout.modal_bottom_sheet, container,
false
)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super
.onViewCreated(view, savedInstanceState)
setupArguments()
setupViews()
}
private
fun setupArguments() {
val items =
requireNotNull(requireArguments().getParcelableArrayList<StockRowItem>(EXTRA_BUNDLE_KEY))
exchangeItems.clear()
exchangeItems.addAll(items)
}
private
val exchangeItemClickListener by lazy {
SimpleItemClickListener<StockRowItem> { item ->
setResult(item)
dismiss()
}
}
private
fun setupViews() {
containerLnl.removeAllViews()
exchangeItems.forEach {
containerLnl.addView(
ExchangeModalViewItem(requireContext()).apply {
setData(it)
itemClickListener = exchangeItemClickListener
}
)
}
}
private
fun setResult(selectedItem: StockRowItem) {
val intent = Intent().apply {
putExtra(EXTRA_RESULT_KEY, selectedItem)
}
targetFragment?.onActivityResult(targetRequestCode, Activity.RESULT_OK, intent)
}
}