2012-05-18 85 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

相关问题