2016-06-04 4 views
0

나는 도시가 표시되지 않습니다 이것은 MainActivity 여기다른 회 전자에서 선택한 회 전자의 항목에 따라 데이터를 표시합니까?

public class MainActivity extends AppCompatActivity { 
Spinner state, city; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    state= (Spinner) findViewById(R.id.spinner); 
    city= (Spinner) findViewById(R.id.spinner2); 
    ArrayAdapter<CharSequence> adapter= ArrayAdapter.createFromResource(this,R.array.states,android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    state.setAdapter(adapter); 
    state.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      String state= parent.getItemAtPosition(position).toString(); 
      Toast.makeText(MainActivity.this, "State = "+state, Toast.LENGTH_SHORT).show(); 
      city= (Spinner) findViewById(R.id.spinner2); 
      if (state=="Rajasthan"){ 
       ArrayAdapter<CharSequence> adapter1= ArrayAdapter.createFromResource(getApplicationContext(),R.array.cities_rajasthan,android.R.layout.simple_spinner_item); 
       adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       city.setAdapter(adapter1); 

      } 
      else if (state=="Madhya Pradesh"){ 
       ArrayAdapter<CharSequence> adapter2= ArrayAdapter.createFromResource(getApplicationContext(),R.array.cities_madhyapradesh,android.R.layout.simple_spinner_item); 
       adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       city.setAdapter(adapter2); 
      } 
      else if (state=="Uttar Pradesh"){ 
       ArrayAdapter<CharSequence> adapter3= ArrayAdapter.createFromResource(getApplicationContext(),R.array.cities_uttarpradesh,android.R.layout.simple_spinner_item); 
       adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       city.setAdapter(adapter3); 
      } 
      else if (state=="Maharashtra"){ 
       ArrayAdapter<CharSequence> adapter4= ArrayAdapter.createFromResource(getApplicationContext(),R.array.cities_maharashtra,android.R.layout.simple_spinner_item); 
       adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       city.setAdapter(adapter4); 
      } 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      Toast.makeText(MainActivity.this, "Nothing is Selected ", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
}} 

입니다

도와주세요 상태 선택한 상태에 따라 그것은 그 안에 도시 만 표시를 선택하는 프로그램을 만들었다는 문자열입니다

<resources> 
<string name="app_name">Spinners2</string> 
<string-array name="states"> 
    <item>Rajasthan</item> 
    <item>Madhya Pradesh</item> 
    <item>Maharashtra</item> 
    <item>Uttar Pradesh</item> 
</string-array> 
<string-array name="cities_rajasthan"> 
    <item>Bikaner</item> 
    <item>Jaipur</item> 
    <item>Jodhpur</item> 
    <item>Jaisalmer</item> 
</string-array> 
<string-array name="cities_madhyapradesh"> 
    <item>Indore</item> 
    <item>Bhopal</item> 
    <item>Jabalpur</item> 
    <item>Ujjain</item> 
</string-array> 
<string-array name="cities_maharashtra"> 
    <item>Pune</item> 
    <item>Mumbai</item> 
    <item>Nagpur</item> 
</string-array> 
<string-array name="cities_uttarpradesh"> 
    <item>Lucknow</item> 
    <item>Agra</item> 
    <item>Kanpur</item> 
</string-array> 
</resources> 

을 .xml 파일이는 activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.saranshagarwal.spinners2.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="State" 
    android:id="@+id/textView" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="60dp" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="City" 
    android:id="@+id/textView2" 
    android:layout_below="@+id/spinner" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<Spinner 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/spinner" 
    android:layout_below="@+id/textView" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<Spinner 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/spinner2" 
    android:layout_below="@+id/textView2" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
</RelativeLayout> 
입니다 이 같은
+0

activity_main.xml도 넣을 수 있습니까? –

+0

업데이트 됨. –

답변

0

시도 String.equals를 (사용

state.setOnItemSelectedListener(
    new OnItemSelectedListener() { 
     public void onItemSelected(
      AdapterView<?> parent, View view, int position, long id) { 
       String selected_item = state.getSelectedItem().toString(); 

       if(selected_item.equals("Rajastan")) 
       { 
        //do your operation here 
       } 
       elseif(..) 
       { 
       .. 
       } 
       //etc 

     } 

      public void onNothingSelected(AdapterView<?> parent) { 
       Toast.makeText(MainActivity.this, "Nothing is Selected ", Toast.LENGTH_SHORT).show(); 
      } 
}); 

는)

이 5 월 당신을 도와줍니다.

해피 코딩 !!!!

+0

와우를 확인하십시오. 맞습니다. 그러나 어쨌든 그것은 어떻게 다른가요? 대답은 –

+0

입니다. 도움이된다면. 대답을 표시하면 다른 사람들이 정답을 쉽게 찾을 수 있습니다. –

1

코드에있는 문제는 서로 다른 개체 인 동안 두 개의 문자열을 == 기호와 비교한다는 것입니다.

대신 ==의 사용 String.equals (객체)

변경이 :

if (state=="Rajasthan") 

사람 :

if(state.equals("Rajasthan")){ 
//Set adapter 
} 

하고 훨씬 더 될 것입니다 사용하면 쉽게 switch case 대신 if-else 진술.

관련 문제