其他分享
首页 > 其他分享> > 如何在Android中禁用RecyclerView项目?

如何在Android中禁用RecyclerView项目?

作者:互联网

Textview和Checkbox都在Recyclerview中.最初选中所有复选框.我想阻止用户更改Checkboxes状态,但我不想阻止Recyclerview滚动.我想在我的片段类中而不是在适配器类中执行此操作.

如何防止用户更改Checkboxes状态?

下面是适配器类中onBindViewHolder编写的示例代码.

holder.cbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            //set your object's last status
            tblFilm.setSelected(isChecked);
        }
    });

The above code used for first mode which allows user clicks on
checkbox.

After that I have second mode where I do not want to get clicked on
checkbox at all.

为此,我所做的就是下面.

optionsoff(recyclerView);
private static void optionsOff(ViewGroup layout) {
        layout.setEnabled(false);
        layout.setClickable(false);
        for (int i = 0; i < layout.getChildCount(); i++) {
            View child = layout.getChildAt(i);
            if (child instanceof ViewGroup) {
                optionsOff((ViewGroup) child);
            } else {
                child.setEnabled(false);
                child.setClickable(false);
            }
        }

我猜这个optionsoff()不起作用.因为它没有禁用复选框.我仍然可以点击复选框.我需要有关第二种方法的帮助,该方法禁用了Recyclerview项目.

解决方法:

每个CheckBox都有方法setEnabled.

onBindViewHolder中,您可以获得所需复选框的引用并将其禁用.

像这样的东西:

public void onBindViewHolder(ViewHolder holder, final int position) {
    holder.checkBox.setEnabled(data.get(position).isEnabled());
}

下面的答案是通过xml的工作解决方案.

标签:android-checkbox,android,android-recyclerview
来源: https://codeday.me/bug/20190829/1759122.html