2011-08-22 52 views
1

我正在開發Android應用程序中,我有3個紡紗從一個叫 部,實踐數據庫填充和地址無法根據從數據庫

我有條件地加載它們即檢索的值設置微調位置,如果它是部門A負載實踐A,B並根據實踐設置地址。

然後,我通過getSelectedItemPosition()將這些位置保存在另一個數據庫表中。

現在,當我嘗試他們3變量deptpos,practipos和addrpos。 但是,當我初始化紡紗它顯示了他們的部門剩下的只有正確的位置後,使用爲setSelection不工作:(

這裏是我的代碼

//Initializing the shared preferences variable 
    final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 

    //Loading the database in writable format 
    db=mydbhelper.getWritableDatabase(); 

    //For Medicines Table 
    try{ 
     //For medicines 
     Cursor medspin = db.query("medicines", null,"_id="+prefs.getInt("pos",1),null,null,null,null); 
     medspin.moveToFirst(); 
     //Filling the variables to set selemedspintion 
     deptpos=medspin.getInt(medspin.getColumnIndex("provider_department")); 
     practipos=medspin.getInt(medspin.getColumnIndex("provider_practice")); 
     addrpos=medspin.getInt(medspin.getColumnIndex("provider_address")); 
     hsname=medspin.getString(medspin.getColumnIndex("healthsystem")); 
     medspin.close(); 
     Toast td=Toast.makeText(this,"Loaded dept is "+deptpos+"Loaded Provider is "+practipos+"Address is "+addrpos,Toast.LENGTH_LONG); 
     td.show(); 


    } 
    catch(Exception e){ 
     Log.e("Error","Error",e); 
    } 




    try{ 

     //Cursor 
     Cursor depcur = db.rawQuery("SELECT _id,department,"+prefs.getString("hsname",null)+ " FROM dept_masterdata WHERE "+prefs.getString("hsname",null)+"=1",null); 
     depcur.moveToFirst(); 
     startManagingCursor(depcur); 
     String[] from = new String[]{"department"}; 
     int[] to = new int[] { android.R.id.text1 }; 
     // Now creating an array adapter and set it to display using my row 
     //Adaptor for Department 
     SimpleCursorAdapter deptype =new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, depcur, from, to); 
     deptype.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     dep.setAdapter(deptype); 


    } 
    catch(Exception e){ 
     Log.e("Error","Error",e); 
    } 
    //Now determine which department is selected 
    //Department 
    dep.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent,View view,int pos,long id){ 
      deptid=dep.getSelectedItemId(); 


      //Setting the practice spinner based on the department selected 
      Cursor pracur = db.rawQuery("SELECT _id,practice,dept_link,hs_id FROM practice_masterdata WHERE dept_link="+deptid+" AND hs_id="+(prefs.getInt("hsid",0)),null); 
      pracur.moveToFirst(); 
      startManagingCursor(pracur); 
      String[] from1 = new String[]{"practice"}; 
      int[] to1 = new int[]{android.R.id.text1}; 
      SimpleCursorAdapter practype =new SimpleCursorAdapter(view.getContext(),android.R.layout.simple_spinner_item, pracur, from1, to1); 
      practype.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      pra.setAdapter(practype); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
     } 
    }); 
    //Practice 
    pra.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent,View view,int pos,long id){ 

      practid=pra.getSelectedItemId(); 


      //Setting the address based on the practice selected 
      Cursor addcur =db.rawQuery("SELECT * FROM address_masterdata WHERE practice_link="+practid,null); 
      addcur.moveToFirst(); 
      startManagingCursor(addcur); 
      String[] from2 = new String[]{"address"}; 
      int[] to2 = new int[]{android.R.id.text1}; 
      SimpleCursorAdapter addtype =new SimpleCursorAdapter(view.getContext(),android.R.layout.simple_spinner_item,addcur, from2, to2); 
      addtype.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      add.setAdapter(addtype); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
     } 
    }); 
    //Address 
    add.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent,View view,int pos,long id){ 
      addrid=add.getSelectedItemId(); 


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







    //Setting the spinners based on the above variables 

    dep.setSelection(deptpos); 
    pra.setSelection(practipos); 
    add.setSelection(addrpos,false); 

} 

我如果變量是一個祝酒證實加載正確的值他們是但它根本不設置他們:(。奇怪的是部門正在顯示正確的設置,而實踐和地址都不是全部:(請指出我要去哪裏錯了

謝謝

回答

2

請問practiceaddress已經有數值了嗎?如果沒有,則加載實踐數據並從倉庫選定的監聽器中尋址,默認情況下,d首先作爲選定元素。

depots[] = loadDepots(); 
depotsSpinner.setAdapter(); 
depotsSpinner.setSelected(0); 

practice[] = loadPractice(depots[0]); 
practiceSpinner.setAdapter(); 
practiceSpinner.setSelected(0); 

address[] = loadAddress(depots[0], practice[0]); 
addressSpinner.setAdapter(); 
addressSpinner.setSelected(0);