2014-11-18 1 views
2

Я хочу выбрать значение из второго счетчика на основе значения, выбранного в первом счетчике. Например, мой первый счетчик отображает название страны и второе имя счетчика показывает название города из этой страны. Проблема заключается в том, что второй счетчик всегда принимает первое значение как выбранное. Пример: первый счетчик - это название страны - Индия, Пакистан, Китай и второй прядильщик - это название города, поэтому, если я выберу Индию, а мой счетчик - , вверх, Пенджаб, то он всегда получить выбранное значение в качестве дели always.When я изменить выбранное значение, даже функция onItemSelected не вызывая again.Code за те жеполучить выбранное значение из второго счетчика на основе выбранного значения первого счетчика

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); 
      } 
     } 
    } 
    } 
+0

По умолчанию первого значения будет выбран как для вашего _Spinners_. Итак, по методу onCreate() вы должны загрузить свой второй счетчик в соответствии с вашим первым значением вашего первого Spinner. – Piyush

+0

как я могу его изменить? @ Piyush Gupta – Anushka

+0

Для отображения 'Select' в качестве текста по умолчанию используйте' prompt' для него. – Piyush

ответ

0
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 

     } 
    }); 

    } 

} 
+0

- не работает. – Anushka

+0

его рабочий код, что вы делаете сообщение обновленный код –

1

Есть решение моей problem.I просто необходимо реализовать onItemSelectListener для второго блесны also.Now обновленного кода

это-
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 

    } 
} 
+0

Хороший ответ, я искал это решение. благодаря –

Смежные вопросы