【问题标题】:CheckBox doesn't change stateCheckBox 不改变状态
【发布时间】:2012-05-18 20:18:12
【问题描述】:

我有一个:

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) {

与点击事件交互。到目前为止效果很好,我的问题是 当我点击一行时,CheckBox 不会改变它的视觉状态。我能做什么?

【问题讨论】:

    标签: android android-listview android-viewbinder


    【解决方案1】:

    我认为您要查看的是 CheckedTextView,它显示一个复选框,当单击列表项时,复选框会更改

    【讨论】:

    • 不,我不想。我的布局要复杂得多,不需要进行重大更改。我的感觉是只有一个小设置可以解决我的问题
    【解决方案2】:

    在您的 onListItemClick 中添加 button.setChecked(true)(或使用 setChecked 来回切换的代码)。

    编辑

    误解了您的问题。您是否告诉适配器数据集已更改?

    【讨论】:

    • 按钮是谁?我所拥有的是受保护的 void onListItemClick(ListView l, View v, int position, long id) { CheckBox checkbox = (CheckBox) v.findViewById(R.id.checkBox1); checkbox.setChecked(!checkbox.isChecked());但它显示没有效果
    • 对不起,是复选框。即使图形没有变化,您能否确认状态正在变化?您是否尝试过 notifyDatasetChanged (我想我说得对,我在手机上并且远离资源)
    • 是的,我打电话给 simpleAdapter.notifyDataSetChanged();这就是问题所在:它调用 getData 方法,该方法不知道任何复选框更改。我评论了它,谢谢你带来的想法指出我的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2020-10-13
    • 1970-01-01
    相关资源
    最近更新 更多