【问题标题】:Android checkbox is not clickable on fragment in recyclerviewAndroid复选框在recyclerview中的片段上不可点击
【发布时间】:2021-05-23 03:35:17
【问题描述】:

我有一个打开片段的活动,它的布局只是 ViewPager 和 RecyclerView。在 RecyclerView 布局元素(附加图片的底部)上只有 ImageView 和 Checkbox。

问题是当我点击这些复选框时,什么也没有发生(它们保持未点击状态)。

我的片段如下所示:

这就是我在我的 Activity 中调用这个片段的方式:

PhotosBrowserFragment browser = PhotosBrowserFragment.newInstance(pics, position, getActivity());
browser.setEnterTransition(new Slide());
browser.setExitTransition(new Slide());
getSupportFragmentManager()
        .beginTransaction()
        .addSharedElement(holder.picture, position + "picture")
        .add(R.id.main_layout, browser)
        .addToBackStack(null)
        .commit();

这是recyclerview的一部分:

@Override
public void onBindViewHolder(@NonNull PhotoIndicatorHolder holder, final int position) {

    final PhotoModel pic = pictureList.get(position);

   (...)

    holder.checkBox.setChecked(pic.getSelectedToAdd());
    holder.checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PhotoModel photoModel1 = (PhotoModel)holder.checkBox.getTag();
            photoModel1.setSelected(holder.checkBox.isChecked());
            pic.setSelected(holder.checkBox.isChecked());
            notifyItemChanged(position);
            notifyDataSetChanged();
        }
    });
}

照片模型:

public class PhotoModel {

    private String name;
    private String uuid;
    private String path;
    private String size;
    private Boolean selected = false;
    private Boolean selectedToAdd = false;

    public PhotoModel() {
    }

    public PhotoModel(String name, String uuid, String path, String size) {
        this.name = name;
        this.uuid = uuid;
        this.path = path;
        this.size = size;
    }

    public Boolean getSelectedToAdd() {
        return selectedToAdd;
    }

    public void setSelectedToAdd(Boolean selectedToAdd) {
        this.selectedToAdd = selectedToAdd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getSize() {
        return size;
    }

    public void setSize(String size) {
        this.size = size;
    }

    public Boolean getSelected() {
        return selected;
    }

    public void setSelected(Boolean selected) {
        this.selected = selected;
    }

我可以补充一点,我从这个链接尝试了一个解决方案:CheckBox in RecyclerView not working when pressed,但在这种情况下不起作用。

如果您需要更多代码,请询问。提前致谢!

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    原来我在布局中的 recyclerview 被放在 Framelayout 中的最后一个,但是如果想要可点击的东西需要作为最后一个视图放置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多