Click here to Skip to main content
15,889,034 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Thank you for the place to ask.

I have two spinners.

First one is for states and there are 36 states including union territories. I have an XML array for states.

The second one is for districts, each state has four to 75 districts. I have one XML file in which there are different arrays of districts for each states.

I want to populate second spinner with districts of states selected in the spinner.

My arrays are in XML and there are total of 740 districts in 36 states.




And sadly i get only the districts of andaman_and_nicobar (State/Union Territory) irrespective of which state I select.

Please help.

What I have tried:

final ArrayAdapter states = ArrayAdapter.createFromResource(this, R.array.States,
android.R.layout.simple_spinner_item);
final ArrayAdapter an = ArrayAdapter.createFromResource(this, R.array.andaman_and_nicobar,
android.R.layout.simple_spinner_item);
final ArrayAdapter ap = ArrayAdapter.createFromResource(this, R.array.andra_pradesh,
android.R.layout.simple_spinner_item);
final ArrayAdapter arp = ArrayAdapter.createFromResource(this, R.array.arunachal_pradesh,
android.R.layout.simple_spinner_item);
final ArrayAdapter as = ArrayAdapter.createFromResource(this, R.array.assam,
android.R.layout.simple_spinner_item);

states.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(states);

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String States = spinner.getItemAtPosition(position).toString();
switch (States) {
case "ANDAMAN AND NICOBAR": {
// if (spinner.getChildCount() == 1) {

an.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
disspinner.setAdapter(an);

}
case "ANDRA PRADESH": {
// if (R.array.States == 2) {

ap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
disspinner.setAdapter(ap);

}
case "ARUNACHAL PRADESH":{
// if (R.array.States == 3) {

arp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
disspinner.setAdapter(arp);
}
case "ASSAM":{
// if (R.array.States == 4) {

as.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
disspinner.setAdapter(as);
}
default: {
an.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
disspinner.setAdapter(an);
}
}

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});}

}
Posted
Updated 27-Nov-19 18:54pm
Comments
David Crow 1-Aug-18 23:42pm    
String States = spinner.getItemAtPosition(position).toString();

Have you checked the value of States using the debugger? I suspect the values you have in R.array.States are not in all caps, which is what your case statements are expecting.

"And sadly i get only the districts of andaman_and_nicobar (State/Union Territory) irrespective of which state I select."

That's because none of the case statements match, thus the default statement is what you are seeing.

1 solution

package com.example.spinr;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

import java.lang.reflect.Array;

public class MainActivity extends AppCompatActivity {
Spinner spinner2, spinner3,spinner4,spinner5;
TextView textView;
String[] countryName={"laos","Myanmar","turkey","Canada"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

spinner2=(Spinner) findViewById(R.id.spinner2);
textView=(TextView)findViewById(R.id.textView);
ArrayAdapter aa=new ArrayAdapter(this,android.R.layout.simple_list_item_1,countryName);
aa.setDropDownViewResource(android.R.layout.simple_list_item_1);
spinner2.setAdapter(aa);
spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int position, long id) {
textView.setText(parent.getItemAtPosition(position).toString());
if (position == 0) {
textView.setText("laos");

} else if (position == 1) {
textView.setText("laos is");

} else if (position == 2) {
textView.setText("laos i");

} else if (position == 3) {
textView.setText("laos is selected");

}
}

@Override
public void onNothingSelected(AdapterView parent) {

}
});

spinner2=(Spinner) findViewById(R.id.spinner2);
textView=(TextView)findViewById(R.id.textView);
ArrayAdapter bb=new ArrayAdapter(this,android.R.layout.simple_list_item_1,countryName);
aa.setDropDownViewResource(android.R.layout.simple_list_item_1);
spinner3.setAdapter(bb);
spinner3.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int position, long id) {
textView.setText(parent.getItemAtPosition(position).toString());
if (position == 0) {
textView.setText("laos");

} else if (position == 1) {
textView.setText("laos is");

} else if (position == 2) {
textView.setText("laos i");

} else if (position == 3) {
textView.setText("laos is selected");

}
}

@Override
public void onNothingSelected(AdapterView parent) {

}
});

spinner4=(Spinner) findViewById(R.id.spinner4);
textView=(TextView)findViewById(R.id.textView);
ArrayAdapter cc=new ArrayAdapter(this,android.R.layout.simple_list_item_1,countryName);
aa.setDropDownViewResource(android.R.layout.simple_list_item_1);
spinner4.setAdapter(cc);
spinner4.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int position, long id) {
textView.setText(parent.getItemAtPosition(position).toString());
if (position == 0) {
textView.setText("laos");

} else if (position == 1) {
textView.setText("laos is");

} else if (position == 2) {
textView.setText("laos i");

} else if (position == 3) {
textView.setText("laos is selected");

}
}

@Override
public void onNothingSelected(AdapterView parent) {

}
});

spinner5=(Spinner) findViewById(R.id.spinner5);
textView=(TextView)findViewById(R.id.textView);
ArrayAdapter dd=new ArrayAdapter(this,android.R.layout.simple_list_item_1,countryName);
aa.setDropDownViewResource(android.R.layout.simple_list_item_1);
spinner5.setAdapter(dd);
spinner5.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int position, long id) {
textView.setText(parent.getItemAtPosition(position).toString());
if (position == 0) {
textView.setText("laos");

} else if (position == 1) {
textView.setText("laos is");

} else if (position == 2) {
textView.setText("laos i");

} else if (position == 3) {
textView.setText("laos is selected");

}
}

@Override
public void onNothingSelected(AdapterView parent) {

}
});

}
}
 
Share this answer
 
Comments
Richard Deeming 28-Nov-19 8:51am    
An unexplained, unformatted code-dump is not a solution.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900