2016-10-05 7 views
0

sqliteから2つのスピナーを作成しています。アクティビティが作成されると、すべての状態がspnStateに設定されます。しかし、スピナーから任意の州を選択すると、のsqliteからDistrictをバインドしたいと思います。私は地方選挙区に表示されていない区域のリストの後に州を選択するときに問題を抱えています。どうすればそれを達成できますか?sqliteの以前のスピナーに基づいて2番目のスピナーがローディングされていません

public void SpinnerValue(){ 
    /*-----------------------Fill State start here----------------------------*/ 

      try { 
       ArrayList<String> state_array = new ArrayList<String>(); 
       state_array.add("Select State"); 
       Cursor cursor_State = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nCtgId = 6", null); 


       if (cursor_State.moveToFirst()) { 
        do { 
         //assing values 
         String stateID = cursor_State.getString(0); 
         String stateName = cursor_State.getString(1); 
         stateData = stateName; 
         state_array.add(stateData); 


        } while (cursor_State.moveToNext()); 
       } 
       ArrayAdapter my_Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, state_array); 
       spnState.setAdapter(my_Adapter); 
       cursor_State.close(); 
       spnState.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

         state = spnState.getSelectedItem().toString(); 

         Cursor cursor = db.rawQuery("SELECT nSerialNo FROM CodeMaster where cCodeName = '" + state + "'", null); 

         if (cursor.moveToFirst()) { 
          do { 
           //assing values 
           stateCodeId = cursor.getString(0); 

          } while (cursor.moveToNext()); 
         } 
         cursor.close(); 
        } 

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

        } 


       }); 
      } catch (Exception e) { 

       e.printStackTrace(); 

      } 

      /*-----------------------Fill District start here----------------------------*/ 

      try { 
       ArrayList<String> district_array = new ArrayList<String>(); 
       district_array.add("Select District"); 
       Cursor cursor_District = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nParentSerialNo = '"+stateCodeId+"'", null); 


       if (cursor_District.moveToFirst()) { 
        do { 
         //assing values 
         String districtID = cursor_District.getString(0); 
         String districtName = cursor_District.getString(1); 
         districtData = districtName; 
         district_array.add(districtData); 


        } while (cursor_District.moveToNext()); 
       } 
       ArrayAdapter district_Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, district_array); 
       spnDistrict.setAdapter(district_Adapter); 
       cursor_District.close(); 
       spnDistrict.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

         district = spnDistrict.getSelectedItem().toString(); 

         Cursor cursor = db.rawQuery("SELECT nSerialNo FROM CodeMaster where cCodeName = '" + district + "'", null); 

         if (cursor.moveToFirst()) { 
          do { 
           //assing values 
           districtCodeId = cursor.getString(0); 

          } while (cursor.moveToNext()); 
         } 
         cursor.close(); 

        } 

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

        } 


       }); 
      } catch (Exception e) { 

       e.printStackTrace(); 

      } 
} 
+0

? 1つの簡単な方法や管理方法を教えてください。 – Vickyexpert

+0

このコードを関数に入れて、その関数をonCreateで呼び出します。 –

+0

コード全体または地区別に分かれていますか? – Vickyexpert

答えて

1

私はあなたのコードをチェックして、あなたが1つの簡単な方法ですべての値を設定しているが、そのためには、あなたの問題を解決するので、ちょうど2つの方法の下に適用するとのonCreateメソッドの最初の呼び出し、地区をフェッチしたstateidがかかりません。

のonCreateメソッドの下コール()メソッドは、すべてこのコードを入れている

// In onCreate() method call below method 
    fillStateData(); 

    public void fillStateData() 
    { 
    try { 
      ArrayList<String> state_array = new ArrayList<String>(); 
      state_array.add("Select State"); 
      Cursor cursor_State = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nCtgId = 6", null); 


      if (cursor_State.moveToFirst()) 
      { 
       do { 
        //assing values 
        String stateID = cursor_State.getString(0); 
        String stateName = cursor_State.getString(1); 
        stateData = stateName; 
        state_array.add(stateData); 
       } while (cursor_State.moveToNext()); 
      } 
      ArrayAdapter my_Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, state_array); 
      spnState.setAdapter(my_Adapter); 
      cursor_State.close(); 
      spnState.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

        state = spnState.getSelectedItem().toString(); 

        Cursor cursor = db.rawQuery("SELECT nSerialNo FROM CodeMaster where cCodeName = '" + state + "'", null); 

        if (cursor.moveToFirst()) {       
          stateCodeId = cursor.getString(0); 
        } 
        cursor.close(); 

        fillDistrictData(stateCodeId); 
       } 

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

       } 
      }); 
     } catch (Exception e) { 

      e.printStackTrace(); 

     } 
    } 






public void fillDistrictData(String stateCodeId) 
{ 
     try { 
       ArrayList<String> district_array = new ArrayList<String>(); 
       district_array.add("Select District"); 
       Cursor cursor_District = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nParentSerialNo = '"+stateCodeId+"'", null); 


       if (cursor_District.moveToFirst()) { 
        do { 
         //assing values 
         String districtID = cursor_District.getString(0); 
         String districtName = cursor_District.getString(1); 
         districtData = districtName; 
         district_array.add(districtData); 


        } while (cursor_District.moveToNext()); 
       } 
       ArrayAdapter district_Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, district_array); 
       spnDistrict.setAdapter(district_Adapter); 
       cursor_District.close(); 
       spnDistrict.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

         district = spnDistrict.getSelectedItem().toString(); 

         Cursor cursor = db.rawQuery("SELECT nSerialNo FROM CodeMaster where cCodeName = '" + district + "'", null); 

         if (cursor.moveToFirst()) { 
          do { 
           //assing values 
           districtCodeId = cursor.getString(0); 

          } while (cursor.moveToNext()); 
         } 
         cursor.close(); 

        } 

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

        } 


       }); 
      } catch (Exception e) { 

       e.printStackTrace(); 

      } 

    } 
+0

おかげでVickyexpert ... –

+0

あなたのコーディングをお楽しみください... – Vickyexpert

関連する問題