Работая над небольшим приложением с двумя фрагментами, второй фрагмент содержит пару блесен.Я хочу передать выбор пользователя из счетчика в recyclerView в первом фрагменте.И я застрял.
Глядя на документацию по Android здесь: Spinner Doc
Последнее предложение в этом документе говорит:
Есливы реализуете интерфейс AdapterView.OnItemSelectedListener с вашим Activity или Fragment (как в примере выше), вы можете передать это как экземпляр интерфейса.
Я грязный новичок .... Яне понимаю, что подразумевается под «передать это как экземпляр интерфейса»
Это мой код счетчика из второго фрагмента
CreateNewJobFragment.kt
//String array. Move this to res/strings
val theTown = arrayOf("Dublin", "Houston", "Paris", "Auckland", "Bismark")
val townSpinner = binding.spinnerLocation
//Adapter for spinner
townSpinner.adapter = ArrayAdapter(activity, android.R.layout.simple_spinner_dropdown_item, theTown)
//item selected listener for spinner
townSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(p0: AdapterView<*>?) {
TODO("not implemented yet")
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
Toast.makeText(activity, theTown[p2], Toast.LENGTH_LONG).show()
nameSpinner.onItemSelectedListener = this
}
}
Мой новый вопрос: что мне делать с nameSpinner.onItemSelectedListener = this? JobAdapter.kt
класс JobAdapter (private val jobList: ArrayList): RecyclerView.Adapter () {
//Returning view for each item in the list
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): JobAdapter.ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.job_list_item, parent, false)
return ViewHolder(v)
}
//Binding the data on the list
override fun onBindViewHolder(holder: JobAdapter.ViewHolder, position: Int) {
holder.bindItems(jobList[position])
}
override fun getItemCount(): Int {
return jobList.size
}
//Class holds the job list view
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindItems(job: JobData) {
val textViewCompnayName = itemView.findViewById(R.id.tv_companyName) as TextView
val textViewLocation = itemView.findViewById(R.id.tv_job_location) as TextView
textViewCompnayName.text = job.companyName
textViewLocation.text = job.location
}
}
}
и данныекласс для него.
JobData.kt
data class JobData(val companyName: String,
val location: String)
Я честно ... я уверен, что мне нужно использовать утилиту JobAdapter, чтобы справиться с этим.Но я не могу заставить его работать.Я также смотрю на ViewModel , но не выяснил, как это сделать.
Кто-нибудь хочет указать мне правильное направление?