2016-10-05 3 views
0

Ich bevölkere zwei Spinner von SQLite. Nun, was ich will, dass, wenn meine Aktivität erstellt wird, dann alle Status in spnState auffüllen. Aber wenn ich irgendeinen Zustand aus dem Spinner wähle, dann möchte ich District von sqlite in spnDistrict binden. Ich bekomme ein Problem, wenn ich den Zustand nach der Liste des Bezirks wähle, der nicht im Bezirksspinner angezeigt wird, es zeigt nur "Bezirk wählen". Wie kann ich das erreichen? Zweiter Spinner nicht geladen basierend auf vorherigen Spinner von sqlite

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

Wo Sie alle diesen Code gesetzt haben? In einer einfachen Methode oder wie Sie es geschafft haben? Setzen Sie den gesamten Code für diese – Vickyexpert

+0

Ich habe diesen Code in Funktion und ich rufe diese Funktion in onCreate. –

+0

Gesamter Code oder für Bezirk haben Sie getrennt? – Vickyexpert

Antwort

1

Ich habe Ihren Code überprüft und Sie alle Werte in einem einfachen Verfahren einstellen, deshalb wird es nicht StateID nehmen Bezirke zu holen, also knapp unter zwei Verfahren anwenden und erste in onCreate Methode aufrufen, um Ihr Problem zu lösen,

Anruf Below Verfahren in onCreate() -Methode

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

Vielen Dank Vickyexpert ... –

+0

Genießen Sie Ihre Codierung ... – Vickyexpert

Verwandte Themen