Android Recyclerview项目在滚动时重置

Android Recyclerview项目在滚动时重置,android,android-recyclerview,Android,Android Recyclerview,这是我的问题。我的recyclerview项目在底部有一个视图,我最初将其设置为GONE。现在,当他们被点击时,我想让他们再次可见。因此,在onClick方法中,我将视图设置为可见。一切都很好,但当我向下滚动并向上滚动时,视图又被隐藏了。我想这和持镜人的声音有关。我想保持现状。我该怎么做?谢谢 视图持有者: public static class CustomCardViewHolder extends RecyclerView.ViewHolder { View mCard;

这是我的问题。我的recyclerview项目在底部有一个视图,我最初将其设置为GONE。现在,当他们被点击时,我想让他们再次可见。因此,在onClick方法中,我将视图设置为可见。一切都很好,但当我向下滚动并向上滚动时,视图又被隐藏了。我想这和持镜人的声音有关。我想保持现状。我该怎么做?谢谢

视图持有者:

public static class CustomCardViewHolder extends RecyclerView.ViewHolder {
    View mCard;
    View mFooter;
    ImageView mIcon;
    TextView mTitle;
    TextView mSummary;

    public CustomCardViewHolder(View view) {
        super(view);
        mCard = view.findViewById(R.id.container);
        mCard.setTag(this);
        mFooter = view.findViewById(R.id.footer); // view to be shown or hidden
        mIcon = (ImageView) view.findViewById(R.id.icon);
        mTitle = (TextView) view.findViewById(R.id.title);
        mSummary = (TextView) view.findViewById(R.id.summary);
    }
OnClick:

@Override
public void onClick(View view) {
    CustomCardViewHolder holder = (CustomCardViewHolder) view.getTag();
    if(holder.mFooter.getVisibility() == View.GONE) {
        expand(holder.mFooter); // this is just an animation and I'm setting the visibility to visible
        notifyItemChanged(holder.getPosition());
        notifyAll();
    } else {
        collapse(holder.mFooter); // similarly this too
        notifyItemChanged(holder.getPosition());
        notifyAll();
    }
}
编辑:上传代码。此外,我还尝试在onClick中更新项的布尔值,并在BindViewHolder上强制执行它。问题是我在工具栏后面有一种假视图(保险杠)。当我展开recyclerview底部的项目并再次向上滚动时,它将不可见。随着我不断滚动recyclerview,它逐渐开始出现

我的活动xml:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/widget_bumper" />

    <include layout="@layout/widget_recyclerview"/>

    <include layout="@layout/widget_toolbar" />

</FrameLayout>

还有我的保险杠:

<?xml version="1.0" encoding="utf-8"?>
<View
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bumper"
    android:layout_width="match_parent"
    android:layout_height="@dimen/widget_bumper_height"
    android:background="?colorPrimary" >
</View>

是的,您认为正确,您必须保留一些标志,以确定视图中哪些项目可见,哪些不可见。根据具体情况,必须设置View.VISIBLE或View.GONE


只要尝试一下,你就会成功。如果没有,请分享代码,我会说怎么做。

是的,您认为正确,您必须保留一些标志,以确定视图中哪些项目可见,哪些不可见。根据具体情况,必须设置View.VISIBLE或View.GONE


只要尝试一下,你就会成功。如果没有,请分享代码,我会说怎么做。

更新了最新库的RecyclerView。这解决了问题。

将RecyclerView更新为最新库。这解决了问题。

您能告诉我们您当前使用的代码吗?如果没有更多信息,我们真的无法提供帮助。@KentHawkings添加了代码。您能告诉我们您当前使用的代码吗?“没有更多的信息,我们真的帮不了忙。”肯特霍金斯补充了代码。我更新了答案。后面的保险杠显示得非常完美,直到我滚动到回收视图的底部展开一个项目,然后当我再次滚动时,它就消失了。我发现了这个东西。“回收器”视图上半部分的项目从顶部向下拉动所有其他项目以执行折叠。因此,当我向上滚动时,保险杠消失了。包括后面的景色。我不知道为什么会这样。我更新了我的答案。后面的保险杠显示得非常完美,直到我滚动到回收视图的底部展开一个项目,然后当我再次滚动时,它就消失了。我发现了这个东西。“回收器”视图上半部分的项目从顶部向下拉动所有其他项目以执行折叠。因此,当我向上滚动时,保险杠消失了。包括后面的景色。我不知道为什么会发生这种情况。不清楚我的问题是如何、为什么或者是否与OP相同,但将
RecyclerView
更新到24.0.0版实际上解决了我的问题。不清楚我的问题是如何、为什么或者是否与OP相同,但将
RecyclerView
更新到24.0.0版实际上解决了我的问题。