2011-02-07 58 views
1

我需要作出與此特定屬性的ListView自定義的ListView有一個複選框和微調

1)每行具有在左側CheckBox和右側的Spinner;

2)Spinner是活動的,並且只有在相關的CheckBox被選中時纔是可選的。

我設法實現(1)使用SimpleAdapterViewBinder

我也能夠把onClickListenerCheckBox使用ViewBinder,像這樣:

myCheckBox.setOnClickListener(new View.OnClickListener() { 
    @Override 
     public void onClick(View v) { 
     if (myCheckBox.isChecked()) //call the "enable spinner" function; 
    } 
}); 

的問題是,我不知道如何找到「啓用微調的權利Spinner 「功能。達到此目的的最佳方法是什麼?

+0

從`ListView`獲取`CheckBox`的行號。這將解決您的問題 – 2011-02-07 09:58:13

回答

0

好的,我解決了它,但我認爲還有更好的辦法!這是我做的:

1)我定義的全局HashMap

private HashMap<String,Object> spinnerMap = new HashMap<String, Object>(); 

2)在ViewBinder(當微調被認爲是)我retrive各Spinner的數量(它存儲在info.get (0)),以及i與旋轉器鏈接它,使用HashMap

spinnerMap.put(String.format("spinner %d", info.get(0)), spinner); 

3)在ViewBinder(當CheckBox被認爲)1設定的enableSpinner(Spinner spinner, boolean b)功能的CheckBoxonClickListener

} else if(data instanceof String && view instanceof CheckBox) { 

        final CheckBox box = (CheckBox) view; 
        final String numero = (String) data; 

        box.setOnClickListener(new View.OnClickListener() { 
         public void onClick(View v) { 
          if (box.isChecked()) { 
           enableSpinner((Spinner)spinnerMap.get(String.format("spinner %d", Integer.parseInt(numero))), true); 
          } else { 
           enableSpinner((Spinner)spinnerMap.get(String.format("spinner %d", Integer.parseInt(numero))), false); 
          } 
         } 
        }); 

        return true; 
       } 

4)最後,這裏的功能:

private void enableSpinner(Spinner spinner, boolean b) { 

    spinner.setEnabled(b); 

} 

這做工作......但你知道更好的辦法?

謝謝!

相關問題