调用notifyDataSetChanged()时,数据会被破坏

时间:2017-05-04 20:56:29

标签: java android android-recyclerview

我有一个Recyclerview,网格布局中有六个项目。我有onClick的监听器,当用户点击该项目时,该项目的缩略图变为灰色。

模型包括getter和setter。活动包括用于模拟的转储数据。适配器检查新缩略图,如果它包含特定字符串,则更新缩略图。

问题:当我执行for循环隐藏所有项目时,最后一项(最后一项索引)变为灰色,数据减少一。

这意味着,0索引中的项目已取消,1索引中的项目现在位于0。因此,每个项目都是他的下一个项目,只有最后一个项目已经改变。

型号:

private int id;
private String Title;
private String Thumbnail;
private String HiddenThumbnail;
private String Sound;
private String spelling_sound;
private int type;
private String extra;
private String hiddentext;

public GameItem(int id, String title, String thumbnail, String sound, String spelling_sound, int mType, String mExtra){
    setId(id);
    setTitle(title);
    setThumbnail(thumbnail);
    setHiddenThumbnail(thumbnail);
    setSound(sound);
    setSpelling_sound(spelling_sound);
    setType(mType);
    setExtra(mExtra);
    setHiddentext(mExtra);
}

适配器:

 if(mThumb.contains("#FFC4C4C4"))
{holder.mCard.setCardBackgroundColor(mContext.getResources().getColor(R.color.bg_hidden));}

隐藏物品:

    private void HideItems() {
    for(int i = 0; i < Items.size(); i++){
        Items.get(i).setThumbnail("#FFC4C4C4");
        Items.get(i).setExtra("");
    }
    mAdapter.notifyDataSetChanged();
}

1 个答案:

答案 0 :(得分:0)

试试这个:

git add -f /public/_redirects

确保项目在适配器中是公开的。