以编程方式切换复选框

Das*_*tic 12 android listview android-arrayadapter

我有一个需要检查/取消选中项目的ListView.我已经设置了一个当前使用android.R.layout.simple_list_item_multiple_choice作为行的ArrayAdapter,一切都显示正常.我也能够正确获得此项目的点击次数.但是,选中该项时,UI 的复选框不会切换.我一直试图弄清楚这一点,有人能指出我正确的方向吗?我只是想知道如何强制UI更新以反映复选框的更改状态.

我可以提供代码,如果需要,但我正在尝试寻找一些非常具体的东西,所以我想发布一堆我的代码将没有多大帮助.

谢谢!

Sal*_*lim 27

以编程方式在java代码中

CheckBox mCheckBox = (CheckBox) findViewById(R.id.checkBox);

mCheckBox.setChecked(true); //to check
mCheckBox.setChecked(false); //to uncheck
Run Code Online (Sandbox Code Playgroud)

在android XML中

android:checked="true" //to check
android:checked="false" //to uncheck
Run Code Online (Sandbox Code Playgroud)

<CheckBox
    android:id="@+id/checkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true"
    android:text="Checkbox Item" />
Run Code Online (Sandbox Code Playgroud)


Par*_*ani 22

首先回顾我的答案:带有复选框的Android列表视图?

很好,因为你想在ListView中实现选中/未选中的复选框,你只需要在getView()方法中实现以下行:

 // also check this lines in the above example
ViewHolder holder = (ViewHolder) view.getTag();
holder.checkbox.setChecked(list.get(position).isSelected());
Run Code Online (Sandbox Code Playgroud)

还要检查getView()方法,以便在CheckView中驻留的CheckBox上实现事件:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = null;
    if (convertView == null) {
        LayoutInflater inflator = context.getLayoutInflater();
        view = inflator.inflate(R.layout.rowbuttonlayout, null);
        final ViewHolder viewHolder = new ViewHolder();
        viewHolder.text = (TextView) view.findViewById(R.id.label);
        viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
        viewHolder.checkbox
            .setOnCheckedChangeListener(
                new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {
                    Model element = (Model) viewHolder.checkbox
                            .getTag();
                    element.setSelected(buttonView.isChecked());
                }
            });
        view.setTag(viewHolder);
        viewHolder.checkbox.setTag(list.get(position));
    } else {
        view = convertView;
        ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
    }
    ViewHolder holder = (ViewHolder) view.getTag();
    holder.text.setText(list.get(position).getName());
    holder.checkbox.setChecked(list.get(position).isSelected());
    // ......  
}
Run Code Online (Sandbox Code Playgroud)