2012-09-26 5 views
1

내 안드로이드 앱에는 레이아웃에 4 개의 스피너가 있습니다. 리스너를 사용하여 스피너에 값을 설정했습니다. 다음 코드 스 니펫은 어떻게 해보려고했는지 보여줍니다. 하지만 사용자가 선택한 값을 듣지 않는 것 같습니다. 대신에 spinner에 설정된 첫 번째 값을 가져옵니다. onItemSelected() 메서드에 정의 된 매개 변수에 대해서는 잘 모릅니다. 내가하고있는 실수는 무엇입니까?동일한 레이아웃에서 다중 스피너 사용

내 질문을 편집했습니다. 다음 코드를 고려하십시오. 다른 쿼리를 사용하여 동일한 절차를 사용하여 스피너에 값을 설정합니다. 다음

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_grama_niladhari); 

    final ArrayList<String> provinceList = new ArrayList<String>(); 
    final ArrayList<String> disList  = new ArrayList<String>(); 
    final ArrayList<String> divList  = new ArrayList<String>(); 
    final ArrayList<String> gramaList = new ArrayList<String>(); 

    final Spinner disSpinner = (Spinner) findViewById(R.id.spinner2); 
    final Spinner divSpinner = (Spinner) findViewById(R.id.spinner3); 
    final Spinner gramaSpinner = (Spinner) findViewById(R.id.spinner4); 


    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, provinceList); 
    final ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, disList); 
    final ArrayAdapter<String> adapter3 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, divList); 
    final ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, gramaList); 


    Button b = (Button) findViewById(R.id.button1); 

    DBHelper dbhlper = new DBHelper(getApplicationContext()); 
    try { 

     dbhlper.createDataBase(); 
     mydb = dbhlper.openDataBase(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    final String selected_item; 
    String province_query = "SELECT pro_code,name FROM jos_province"; 

    Cursor c = mydb.rawQuery(province_query, null); 
    provinceList.clear(); 

    final HashMap<String, Integer> hm = new HashMap<String, Integer>(); 
    if (c != null) { 

     int i = 1; 
     int noCols = c.getCount(); 
     if (c.moveToFirst()) { 
      do { 

       Log.d("Data" + i, c.getString(1)); 
       provinceList.add(c.getString(1)); 

       hm.put(c.getString(1), c.getInt(0)); 

      } while (c.moveToNext()); 

     } 

    } 

    final Spinner provSpinner = (Spinner) findViewById(R.id.spinner1); 
    // ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, 
    // provinceList); 
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    provSpinner.setAdapter(adapter1); 

    // //////////////////////////////// Handling spinner1 /////////////////////////////////// 

    final String sel_district_id = null; 

    provSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @TargetApi(11) 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View arg1, 
       int arg2, long arg3) { 
      String province = provSpinner.getSelectedItem().toString(); 
      int sel_province_id = hm.get(province); 



      String district = "SELECT id,name_english from jos_district `enter code here`where province_id= "+ sel_province_id; 

      // ArrayList<String> disList=new ArrayList<String>(); 
      Cursor c = mydb.rawQuery(district, null); 
      hm.clear(); 
      disList.clear(); 
      if (c != null) { 

       int i = 1; 
       int noCols = c.getCount(); 
       if (c.moveToFirst()) { 
        do { 

         Log.d("Data" + i, c.getString(1)); 

         disList.add(c.getString(1)); 


        disList.toString()); 
         i++; 
         hm.put(c.getString(1),c.getInt(0)); 


        } while (c.moveToNext()); 

       } 

      } 
      //String sel_district_id ="66"; 

      adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      String listCount=Integer.toString(adapter2.getCount()); 
      disSpinner.setAdapter(adapter2); 

       } 

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

     } 

    }); 

    disSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View arg1, 
       int arg2, long arg3) { 

      String selected_dis = `enter code here`disSpinner.getSelectedItem().toString(); 
      String sel_district_id = hm.get(selected_dis).toString(); 


      String division = "SELECT id,name_english FROM jos_division `enter code here`WHERE district_id= " 
        + sel_district_id; 
      Cursor c = mydb.rawQuery(division, null); 
      hm.clear(); 
      if (c != null) { 

       int i = 1; 
       int noCols = c.getCount(); 
       if (c.moveToFirst()) { 
        do { 

         Log.d("Data " + i, c.getString(1)); 
         divList.add(c.getString(1)); 

         hm.put(c.getString(1), `enter code here`c.getInt(0)); 
         // `enter code here`provinceList.add(c.getString(1)); 

        } while (c.moveToNext()); 

       } 
      } 
      // set the view for the Drop down list 
      `enter code here`adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      // set the ArrayAdapter to the spinner 
      divSpinner.setAdapter(adapter3); 

     } 

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

     } 
    }); 

    divSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View arg1, 
       int arg2, long arg3) { 

      String `enter code here`selected_division=divSpinner.getSelectedItem().toString(); 

      sel_division_id = hm.get(selected_division).toString(); 

      String gramaniladhari = "SELECT lifecode,name_english FROM jos_gramaniladhari WHERE divisional_secretariat_id= " + sel_division_id; 


      hm.clear(); 
      Cursor c=mydb.rawQuery(gramaniladhari, null); 
      if (c != null) { 

       int i = 1; 
       int noCols = c.getCount(); 
       if (c.moveToFirst()) { 
        do { 

         Log.d("Data " + i, c.getString(1)); 
         divList.add(c.getString(1)); 

         hm.put(c.getString(1),c.getInt(0)); 

        } while (c.moveToNext()); 

       } 

      } 

     // set the view for the Drop down list 
         `enter code here`adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      // set the ArrayAdapter to the spinner 
      gramaSpinner.setAdapter(adapter4); 


      String `enter code here`selected_grama=gramaSpinner.getSelectedItem().toString(); 
      String lifeCode = hm.get(selected_grama).toString(); 
     } 

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

     } 
    }); 

레이아웃

<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" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="22dp" 
    android:text="@string/enter_your_provincial_details" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="16dp" 
    android:text="@string/button" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="40dp" 
    android:text="@string/province" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignRight="@+id/textView4" 
    android:layout_below="@+id/textView2" 
    android:layout_marginTop="35dp" 
    android:text="@string/district" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/textView3" 
    android:layout_marginTop="44dp" 
    android:text="@string/division" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/textView4" 
    android:layout_marginTop="46dp" 
    android:text="@string/grama_niladhari" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/textView3" 
    android:layout_alignParentRight="true" 
    android:layout_toRightOf="@+id/button1" /> 

<Spinner 
    android:id="@+id/spinner2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/textView4" 
    android:layout_alignLeft="@+id/spinner1" 
    android:layout_alignParentRight="true" /> 

<Spinner 
    android:id="@+id/spinner3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/spinner2" 
    android:layout_alignParentRight="true" 
    android:layout_alignTop="@+id/textView4" /> 

<Spinner 
    android:id="@+id/spinner4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/textView5" 
    android:layout_alignLeft="@+id/spinner3" 
    android:layout_alignParentRight="true" /> 

    </RelativeLayout> 

의 XML 파일입니다! [이 내 코드에서 로그 캣의 result.the 라인 (262)이 문자열 selected_grama = gramaSpinner.getSelectedItem()이다. toString() ;

] 1

답변

0

당신은 두 스피너 객체의 아이디 spinner2와 리소스를 사용하고 있습니다. 그게 문제 당신이 코드 provSpinnerdisSpinner에 스피너의 모두에 즉 동일한 회 전자의 id, spinner2을 할당하는, 위의 게시 된 코드에서 다음

+0

실수입니다. 죄송합니다. prob는 여전히 남아 있습니다. – erandi

1

을 수 있습니다. 따라서 레이아웃 XML 파일에서 리소스의 ID를 확인한 다음 회 전자 중 하나의 리소스 ID를 변경하십시오. 희망이 도움이됩니다.

+1

죄송합니다. 내 코드를 복사 할 때 실수를 저질렀습니다. 원래 코드에서 다른 ID를 사용했습니다. 최종 Spinner provinner = (회 전자) findViewById (R.id.spinner1); 최종 스피너 disSpinner = (회 전자) findViewById (R.id.spinner2); 문제는 여전히 해결되지 않습니다. – erandi

+0

@erandi : LogCat에서 오류를 확인 했습니까? 어떤 것이 있으면 여기에 게시하십시오 .. –

+0

@erandi : XML 파일의 코드와 스피너의 전체 코드를 게시 할 수 있다면 좋을 것입니다. –

관련 문제