I have a RecylcerView that the view is clicked should take the user to a dialog fragment where the user will be able to edit the content of the view. Hence i need to pass the data as data class DressMeasurementModel from the host fragment to the dailog fragment.
How can i achieve this?
// This property is only valid between onCreateView and onDestroyView.
private val binding get() = _binding!!
private lateinit var addMeasurementFab: FloatingActionButton
private lateinit var display:TextView
private lateinit var myAdapter: AddMeasurementAdapter
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
_binding = MeasurementsFragmentBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val recyclerView = binding.measurementsFragmentRecyclerView
myAdapter = AddMeasurementAdapter(currentList,this@MeasurementsFragment, this@MeasurementsFragment)
recyclerView.adapter = myAdapter
recyclerView.layoutManager = StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
}
override fun onItemClicked1(dressMeasurementModel: DressMeasurementModel) {
val data = DressMeasurementModel(dressMeasurementModel.measurementName, dressMeasurementModel.measurement)
val bundle = bundleOf("editData" to data)
setFragmentResult("editData_key", bundle)
EditMeasurementDialogFragment().show(childFragmentManager, "Dialog tag")
}
}
Have your Dialog class with a constructor which you want the data:
class EditMeasurementDialogFragment(data: DressMeasurementModel)
You can pass it in a constructor like below:
val data = DressMeasurementModel(dressMeasurementModel.measurementName, dressMeasurementModel.measurement)
EditMeasurementDialogFragment(data).show(childFragmentManager, "Dialog tag")