get selected value from second spinner on the basis of selected value of first spinner

余生颓废 提交于 2020-01-02 10:06:36

问题


I want to select value from second spinner on the basis of value selected in first spinner.For example my first spinner displays country name and second spinner displays city name of that respective country.The problem is that second spinner is always taking first value as selected.Example-first spinner is country name-India,pakistan,china and second spinner is cities name,so if i select india and my spinner is-delhi,up,punjab then it always get selected value as delhi always.When I change the selected value even the function onItemSelected is not calling again.Code for the same is-

public class LaunchCampaign1 extends Activity implements OnItemSelectedListener,OnClickListener
{
    String[] countryStr = {"Select", "India", "Pakistan", "China"};
    String[] states_india = {"Select", "Delhi", "UP", "Bihar"};
    String[] states_china = { "Select","Shanghai", "Beijing", "Nanjing"};
    String[] states_pak = { "Select","Lahor", "Islamabaad", "Punjab"};
 @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launch_campaign);
country=(Spinner)findViewById(R.id.spinnerCountry);

        country.setOnItemSelectedListener((OnItemSelectedListener) this);
        ArrayAdapter <String> c = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,countryStr);
        c.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        country.setAdapter(c);

        city=(Spinner)findViewById(R.id.spinnerCity);
        city.setOnItemSelectedListener((OnItemSelectedListener) this);
        city.setEnabled(false);
 public void onItemSelected(AdapterView<?> arg0, View view, int position,long id) 
    {
        if(arg0.equals(country))
        {
            city.setEnabled(true);
            if(country.getSelectedItem().equals("India"))
            {
                ArrayAdapter <String> s1 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_india);
                s1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                city.setAdapter(s1);
                /*city.setSelection(position);
                Log.e("pos",""+position);
                String cityStr = (String) city.getSelectedItem();*/
                String cityStr=(String) city.getSelectedItem();
                Log.e("city",cityStr);
             }
             else  if(country.getSelectedItem().equals("Pakistan"))
             {
                 ArrayAdapter <String> s2 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_pak);
                 s2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                 city.setAdapter(s2);
             }
             else  if(country.getSelectedItem().equals("China"))
             {
                 ArrayAdapter <String> s3 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_china);
                 s3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                 city.setAdapter(s3);
             }
        }
   } 
    }

回答1:


Got the solution of my problem.I just need to implement the onItemSelectListener for second spinner also.Now the updated code is-

public class LaunchCampaign1 extends Activity implements OnClickListener,OnItemSelectedListener
{
String[] countryStr = {"Select", "India", "Pakistan", "China"};
    String[] states_india = {"Select", "Delhi", "UP", "Bihar"};
    String[] states_china = { "Select","Shanghai", "Beijing", "Nanjing"};
    String[] states_pak = { "Select","Lahor", "Islamabaad", "Punjab"};
 @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launch_campaign);
country=(Spinner)findViewById(R.id.spinnerCountry);

        country.setOnItemSelectedListener((OnItemSelectedListener) this);
        ArrayAdapter <String> c = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,countryStr);
        c.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        country.setAdapter(c);

        city=(Spinner)findViewById(R.id.spinnerCity);
        city.setOnItemSelectedListener((OnItemSelectedListener) this);
        city.setEnabled(false);
public void onItemSelected(AdapterView<?> parent, View view, int position,long id) 
    {
        switch(parent.getId())
        {
            case R.id.spinnerCountry: 
                city.setEnabled(true);
                if(country.getSelectedItem().equals("India"))
                {
                    ArrayAdapter <String> s1 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_india);
                    s1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    city.setAdapter(s1);
                }
                else  if(country.getSelectedItem().equals("Pakistan"))
                {
                    ArrayAdapter <String> s2 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_pak);
                    s2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    city.setAdapter(s2);
                }
                else  if(country.getSelectedItem().equals("China"))
                {
                    ArrayAdapter <String> s3 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_china);
                    s3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    city.setAdapter(s3);
                }
            break;

            case R.id.spinnerCity:
                String cityStr1=city.getSelectedItem().toString();
                Log.e("city1",cityStr1);
        }
    }
@Override
    public void onNothingSelected(AdapterView<?> parent) {
        // TODO Auto-generated method stub

    }
}



回答2:


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class Data1Activity extends Activity {
String[] countryStr = { "India",  "China","Pakistan"};
String[] states_india = { "Delhi", "UP", "Bihar"};
String[] states_china = { "Shanghai", "Beijing", "Nanjing"};
String[] states_pak = { "Lahor", "Islamabaad", "Punjab"};
Spinner country,city;
ArrayAdapter<String> adaptercountry;
ArrayAdapter<String> adaptercity;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main1);

    country= (Spinner) findViewById(R.id.spinner1);
    city = (Spinner) findViewById(R.id.spinner2);
    adaptercountry = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,countryStr);
    country.setAdapter(adaptercountry);

    country.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            if(position==0)
            {
                adaptercity = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,states_india);
            }
            else
                if(position==1)
                {
                    adaptercity = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,states_china);
                }
                else
                    if(position==2)
                    {
                        adaptercity = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,states_pak);
                    }

            city.setAdapter(adaptercity);

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub

        }
    });

  }

}


来源:https://stackoverflow.com/questions/26987734/get-selected-value-from-second-spinner-on-the-basis-of-selected-value-of-first-s

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!