【发布时间】: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