2012-06-18 2 views
1

나는 checkBoxSpinner입니다. checkbox을 선택하면 spinner이 데이터베이스를 호출하고 거기에서 값을 가져 오거나 그렇지 않으면 기본값을 가져와야합니다.Android - 체크 박스를 선택하면 Spinner가 변경해야합니다.

내 문제는 체크 박스가 선택되어 있으면 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

당신은 setOnCheckedChangeListener 내부 spinner.setSelection(pos)을 사용할 수 있습니다. 나는 당신이 데이터베이스에서 가치를 얻는 당신 자신의 방법을 펼쳤다는 것을 알 수있다. 이제 반환 된 값에 따라 스피너를 선택하십시오.

관련 문제