Android/Kotlin passing data from a spinner in one fragment to RecyclerView in another Fragment





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















Working on a small app with two Fragments, the second Fragment contains a couple spinners. I want to pass the user selection from the spinner to a recyclerView in the first Fragment. And I am stuck.



Looking at the Android documentation here: Spinner Doc



The last sentence in that doc says:




If you implement the AdapterView.OnItemSelectedListener interface with your Activity or Fragment (such as in the example above), you can pass this as the interface instance.




I'm a dirty newbie....I do not understand what is meant by "pass this as the interface instance"



This is my spinner code from the second 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
}
}


My newb question is what do I do with 'nameSpinner.onItemSelectedListener = this'?



I have an adapter setup that at the moment is just passing dummy data to my recyclerView



JobAdapter.kt



class 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
}
}


}



And a data class for it.



JobData.kt



data class JobData(val companyName: String,
val location: String)


I'm fairly...ish certian I need to use utilize my JobAdapter to handle this. But I am not able to get it to work. I'm also looking at ViewModel, but have not figured out how to get this going.



Anyone wanna point me in the right direction?










share|improve this question































    1















    Working on a small app with two Fragments, the second Fragment contains a couple spinners. I want to pass the user selection from the spinner to a recyclerView in the first Fragment. And I am stuck.



    Looking at the Android documentation here: Spinner Doc



    The last sentence in that doc says:




    If you implement the AdapterView.OnItemSelectedListener interface with your Activity or Fragment (such as in the example above), you can pass this as the interface instance.




    I'm a dirty newbie....I do not understand what is meant by "pass this as the interface instance"



    This is my spinner code from the second 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
    }
    }


    My newb question is what do I do with 'nameSpinner.onItemSelectedListener = this'?



    I have an adapter setup that at the moment is just passing dummy data to my recyclerView



    JobAdapter.kt



    class 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
    }
    }


    }



    And a data class for it.



    JobData.kt



    data class JobData(val companyName: String,
    val location: String)


    I'm fairly...ish certian I need to use utilize my JobAdapter to handle this. But I am not able to get it to work. I'm also looking at ViewModel, but have not figured out how to get this going.



    Anyone wanna point me in the right direction?










    share|improve this question



























      1












      1








      1


      1






      Working on a small app with two Fragments, the second Fragment contains a couple spinners. I want to pass the user selection from the spinner to a recyclerView in the first Fragment. And I am stuck.



      Looking at the Android documentation here: Spinner Doc



      The last sentence in that doc says:




      If you implement the AdapterView.OnItemSelectedListener interface with your Activity or Fragment (such as in the example above), you can pass this as the interface instance.




      I'm a dirty newbie....I do not understand what is meant by "pass this as the interface instance"



      This is my spinner code from the second 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
      }
      }


      My newb question is what do I do with 'nameSpinner.onItemSelectedListener = this'?



      I have an adapter setup that at the moment is just passing dummy data to my recyclerView



      JobAdapter.kt



      class 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
      }
      }


      }



      And a data class for it.



      JobData.kt



      data class JobData(val companyName: String,
      val location: String)


      I'm fairly...ish certian I need to use utilize my JobAdapter to handle this. But I am not able to get it to work. I'm also looking at ViewModel, but have not figured out how to get this going.



      Anyone wanna point me in the right direction?










      share|improve this question
















      Working on a small app with two Fragments, the second Fragment contains a couple spinners. I want to pass the user selection from the spinner to a recyclerView in the first Fragment. And I am stuck.



      Looking at the Android documentation here: Spinner Doc



      The last sentence in that doc says:




      If you implement the AdapterView.OnItemSelectedListener interface with your Activity or Fragment (such as in the example above), you can pass this as the interface instance.




      I'm a dirty newbie....I do not understand what is meant by "pass this as the interface instance"



      This is my spinner code from the second 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
      }
      }


      My newb question is what do I do with 'nameSpinner.onItemSelectedListener = this'?



      I have an adapter setup that at the moment is just passing dummy data to my recyclerView



      JobAdapter.kt



      class 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
      }
      }


      }



      And a data class for it.



      JobData.kt



      data class JobData(val companyName: String,
      val location: String)


      I'm fairly...ish certian I need to use utilize my JobAdapter to handle this. But I am not able to get it to work. I'm also looking at ViewModel, but have not figured out how to get this going.



      Anyone wanna point me in the right direction?







      android android-fragments android-recyclerview kotlin






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 25 '18 at 10:49







      CB Midkiff

















      asked Nov 25 '18 at 10:35









      CB MidkiffCB Midkiff

      347




      347
























          0






          active

          oldest

          votes












          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53466633%2fandroid-kotlin-passing-data-from-a-spinner-in-one-fragment-to-recyclerview-in-an%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53466633%2fandroid-kotlin-passing-data-from-a-spinner-in-one-fragment-to-recyclerview-in-an%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()