Android / Kotlin передает данные из счетчика в одном фрагменте в RecyclerView в другом фрагменте - PullRequest
0 голосов
/ 25 ноября 2018

Работая над небольшим приложением с двумя фрагментами, второй фрагмент содержит пару блесен.Я хочу передать выбор пользователя из счетчика в 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 , но не выяснил, как это сделать.

Кто-нибудь хочет указать мне правильное направление?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...