2012-09-26 30 views
1

在我的android應用程序中,我在佈局中有4個紡紗器。我使用監聽器爲紡紗器設置了值。 以下代碼片段顯示了我如何嘗試這樣做。 但它似乎不聽用戶選擇的值。而是它獲得了第一個在spinner中設置的值。我對onItemSelected()方法中定義的參數沒有好的想法。 我在做什麼錯誤?在同一佈局中使用多個紡紗器

我編輯了我的問題。請考慮以下代碼。它使用相同的過程來爲spinners設置值,並使用不同的查詢。

@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文件![這是我的代碼logcat的result.the線262,字符串selected_grama = gramaSpinner.getSelectedItem()。的toString() ;

] 1

回答

0

您使用的是有兩個微調對象ID spinner2資源。這可能是問題

+0

這是一個錯誤,對不起,問題仍然是 – erandi

1

在這裏,在你上面貼你在代碼provSpinnerdisSpinner分配相同的微調,即的idspinner2到這兩個紡紗的代碼。因此,請檢查佈局XML文件中資源的ID,然後更改任何一個微調器的資源ID。希望有所幫助。

+1

對不起,我在這裏複製我的代碼時犯了錯誤,在我原來的代碼中我使用了不同的ID。 final Spinner provSpinner =(Spinner)findViewById(R.id.spinner1); final Spinner disSpinner =(Spinner)findViewById(R.id.spinner2);問題仍然存在。 – erandi

+0

@erandi:你有沒有檢查LogCat的任何錯誤?如果有的話,請在這裏發帖.. –

+0

@erandi:如果你可以發佈你的XML文件的代碼和spinners的完整代碼,這將是非常棒的。 –