2012-05-18 114 views
1

我有一個:複選框不改變狀態

public class MyList extends ListActivity { 
    SimpleAdapter simpleAdapter; 

結合ListView被做了ViewBinder

simpleAdapter = new SimpleAdapter(this, getData(path), 
      R.layout.menu_row, new String[] { 
     ..., "checked" }, new int[] {..., R.id.checkBox1 }); 

    SimpleAdapter.ViewBinder viewBinder = new SimpleAdapter.ViewBinder() { 
     @Override 
     public boolean setViewValue(View view, Object data, 
       String textRepresentation) { 
      if (view.getId() == R.id.checkBox1) { 
           CheckBox checkBox = (CheckBox) view; 
       checkBox.setChecked(Boolean.parseBoolean((String) data)); 

我的XML看起來像這樣,clickablefocusable有助於該行表現爲一個。

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:clickable="false" 
    android:focusableInTouchMode="false" 
    /> 

我也有一個:

protected void onListItemClick(ListView l, View v, int position, long id) { 

與click事件交互。這個效果很好,我的問題是 當我點擊一行時,CheckBox不會改變它的視覺狀態。我能做什麼?

回答

0

把一個button.setChecked(true)在你onListItemClick(或代碼切換回使用setChecked)。

編輯

誤解了你的問題。您是否告訴適配器數據集已更改?

+0

誰是按鈕? 我有的是 \t保護無效onListItemClick(ListView的升,視圖V,INT位置,長ID){ \t \t 複選框\t複選框=(複選框)v.findViewById(R.id.checkBox1); checkbox.setChecked(!checkbox.isChecked()); 但它顯示沒有效果 – user1324936

+1

對不起,意思是複選框。即使圖形不是,您是否可以確認狀態正在改變?你有沒有嘗試notifyDatasetChanged(我認爲我有這個權利,我:我的手機上,遠離資源) – Barak

+0

是的,我打電話給simpleAdapter.notifyDataSetChanged(); 這是問題所在:它調用getData方法,該方法不知道任何複選框更改。我評論說,謝謝你的想法帶來了我的錯誤 – user1324936

1

我想你想看看什麼是CheckedTextView它顯示了一個複選框並單擊列表項時,該複選框改變

+0

不,我不想。我的佈局更加複雜,不需要進行重大更改。我的感覺說只有一個小的設置可以修復我的問題 – user1324936

相關問題