2012-06-18 74 views
1

我有checkBoxSpinner。如果checkbox被選中,那麼spinner應該調用數據庫並從那裏獲取值,否則爲默認值。Android - 當我們選中複選框時,Spinner需要更改

我的問題是: 如果CheckBox被選中,應該調用Spinner。如何實現這一點?

我的代碼是:

private HashMap<Integer,ReturnProduct> retrunTypes =new HashMap<Integer, ReturnProduct>(); 

checkBox1=(CheckBox)findViewById(R.id.checkBox1); 
    checkBox1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if(isChecked) { 
      rtnStatus =true; 
      retrunTypes = getReturnRason(); 
     }else { 
      rtnStatus =false; 
     } 

    } 
    }); 

微調:

 retrunTypes = getReturnRason(); 
    ArrayList<String> returnTypeList = new ArrayList<String>(); 
    for (Map.Entry<Integer, ReturnProduct> entry : retrunTypes.entrySet()) { 
      ReturnProduct myProduct = entry.getValue(); 
      returnTypeList.add(myProduct.getDescription()); 
    } 

    retuReason = (Spinner) findViewById(R.id.retuReason); 
    reTypeAdapter = new ArrayAdapter<String>(SalesActivityGroup.group.getApplicationContext(),android.R.layout.simple_spinner_item, returnTypeList); 
    reTypeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 
    retuReason.setAdapter(reTypeAdapter); 
    retuReason.setOnItemSelectedListener(new OnItemSelectedListener() { 
     public void onItemSelected(AdapterView<?> parent, View view,int arg2, long arg3) { 
      //selectedReType = parent.getSelectedItem().toString(); 
      selectedReTypeId= arg2; 
      selectedReType = retrunTypes.get(selectedReTypeId).getReturnReason(); 

      //ReturnProduct rProduct = findReturnType(selectedReType); 
      processingRequird = retrunTypes.get(selectedReTypeId).getProcessingRequired(); 
      selectedReTypeCode = selectedReType; 
      selectedRetCategory = retrunTypes.get(selectedReTypeId).getReturnCategory(); 
     } 
     public void onNothingSelected(AdapterView<?> arg0) { 
     } 
    }); 


private HashMap<Integer,ReturnProduct> getReturnRason(){ 
    DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(this); 
    HashMap<Integer,ReturnProduct> returnType = new HashMap<Integer, ReturnProduct>(); 
    try { 
     dbAdapter.openDataBase(); 
     String query =""; 
     if(rtnStatus) { 
      query = "SELECT rs.ReturnReasonCode,rs.ReturnType,rs.Description,rt.ProcessingRequired,rt.ReturnCategory " + 
        " FROM WMReturnReason rs,WMReturnType rt" + 
        " WHERE rs.ReturnType =rt.ReturnType AND rs.BusinessUnit=? AND Status ='1' AND rt.ProcessingRequired ='1' "; 
     }else { 
      query = "SELECT rs.ReturnReasonCode,rs.ReturnType,rs.Description,rt.ProcessingRequired,rt.ReturnCategory " + 
        " FROM WMReturnReason rs,WMReturnType rt" + 
        " WHERE rs.ReturnType =rt.ReturnType AND rs.BusinessUnit=? AND Status ='1' "; 
     } 

     String[] d = new String[]{strBusinessUnit}; 
     ArrayList<?> stringList = dbAdapter.selectRecordsFromDBList(query, d); 

     dbAdapter.close(); 
     //System.out.println("===getReturnType=="+stringList.size()); 
     if(stringList.size() > 0){ 
      for (int i = 0; i < stringList.size(); i++) { 
       ArrayList<?> arrayList = (ArrayList<?>) stringList.get(i); 
       ArrayList<?> list = arrayList; 
       ReturnProduct returnProduct = new ReturnProduct(); 
       returnProduct.setReturnReason((String) list.get(0)); 
       returnProduct.setReturnType((String) list.get(1)); 
       returnProduct.setDescription((String) list.get(2)); 

       returnProduct.setProcessingRequired((String) list.get(3)); 
       returnProduct.setReturnCategory((String) list.get(4)); 

       returnType.put(i, returnProduct); 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return returnType; 
} 
+0

你能對你的問題更具體嗎?你想要什麼或什麼是你的問題? – user370305

回答

1

您可以使用spinner.setSelection(pos)setOnCheckedChangeListener內。我可以看到你已經推出了你自己的方法來從數據庫中獲取值。現在基於返回的值就可以選擇你的微調。

相關問題