У меня есть список заметок, которые я сохранил в базе данных FirebaseRealtime и отобразил в recyclerView.
Нажав на элемент в списке, я открываю фрагмент, передавая ему «guid».Но так как в этом элементе все еще есть поля name, description, я хочу отобразить их во фрагменте.
Q: как мне получить остальные данные из FirebaseRealtime Databse, зная идентификатор?
class TargetEditFragment : Fragment() {
private var nameEditText: TextInputEditText? = null
private var descriptionEditText: TextInputEditText? = null
private var button: Button? = null
private var databaseReference: DatabaseReference? = null
private var presenter = TargetEditPresenter()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.getString("guid", "")
Log.d("some", "onCreate ${arguments?.getString("guid", "")}")
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_target_add, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
databaseReference = FirebaseDatabase.getInstance().getReference("targets")
setupViews()
fetchData()
}
private fun setupViews() {
nameEditText = view?.findViewById(R.id.nameEditText)
descriptionEditText = view?.findViewById(R.id.descriptionEditText)
button = view?.findViewById(R.id.addNote)
button?.setOnClickListener { addTarget() }
}
private fun addTarget() {
val name = nameEditText?.text.toString().trim()
val description = descriptionEditText?.text.toString().trim()
if (!TextUtils.isEmpty(name)) {
val id: String = databaseReference?.push()?.key.toString()
val target = Target(guid = id, name = name, description = description)
databaseReference?.child(id)?.setValue(target)
} else Log.d("some", "Enter a name")
}
//Here I want to get the data name and decription
private fun fetchData() {
// nameEditText?.text = Editable.Factory.getInstance().newEditable(target?.name ?: "name")
// descriptionEditText?.text = Editable.Factory.getInstance().newEditable(target?.description ?: "description")
}
companion object {
fun newInstance(guid: String): TargetEditFragment =
TargetEditFragment().apply {
arguments = Bundle().apply { putString("guid", guid) }
Log.d("some", "argumeeents $arguments")
}
}
}
Также мой целевой класс:
data class Target(val guid: String = "",
val name: String = "",
val description: String= "")