RecyclerView中的多选选择选择未选择的视图

时间:2018-01-26 19:59:24

标签: android android-recyclerview

我试图在我的应用中实现多选功能。这工作正常,但当我在应用程序上选择一张卡并向下滚动RecyclerView时,问题就出现了,列表中的第四项已经被选中。这就是我的onBindViewHolder的样子:

holder.rvPictureContainer.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        model.setSelected(!model.getSelected());
        holder.rvPictureContainer.setCardBackgroundColor(model.getSelected() ? ContextCompat.getColor(ctx, R.color.colorAccent) : Color.WHITE);
    }
});

这是我的模特:

public class PictureModel {
private String imgURL, imgTitle, imgAuthor;
private Boolean isSelected = false;

public PictureModel(String imgURL, String imgTitle, String imgAuthor) {
    this.imgURL = imgURL;
    this.imgTitle = imgTitle;
    this.imgAuthor = imgAuthor;
}

public String getImgURL() {
    return imgURL;
}

public String getImgTitle() {
    return imgTitle;
}

public String getImgAuthor() {
    return imgAuthor;
}

public void setSelected(Boolean selected) {
    isSelected = selected;
}

public Boolean getSelected() {
    return isSelected;
}

}

1 个答案:

答案 0 :(得分:2)

由于recycleler视图重用了单元格,因此需要清除它正在重用的单元格的状态。您可以通过在onBindViewHolder上设置单元格的当前状态来实现。例:

public void onBindViewHolder(YourViewHolder holder, int position, List<Object> payloads) {
    YourModel model = items[position]
    holder.setup(model)
}

setup内,确保为该单元格设置正确的状态。

在您的情况下,这意味着设置正确的选定状态。

我希望这会有所帮助。