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;
}
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
add a comment |
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
add a comment |
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
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
android android-fragments android-recyclerview kotlin
edited Nov 25 '18 at 10:49
CB Midkiff
asked Nov 25 '18 at 10:35
CB MidkiffCB Midkiff
347
347
add a comment |
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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