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