当前位置: 首页 > 知识库问答 >
问题:

回收商查看项目在滚动时重置

柯梓
2023-03-14

所以,这就是我的问题。我的recyclerview项目在底部有一个视图,我最初将其设置为消失。现在,当它们被点击时,我想让它们再次可见。所以在onClick方法中,我将视图设置为Visible。一切正常,但是当我向下滚动和向上滚动时,视图又隐藏了。我想这和取景模式有关。我想保持现状,即开放。我该怎么做?谢了。

视图支架:

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);
    }

点击:

@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中更新Item的布尔值并在BindViewHolder上强制执行它。问题是我在工具栏后面有一种假视图(保险杠)。当我展开回收器视图底部的项目并再次向上滚动时,它变得不可见。当我继续滚动回收器视图时,它逐渐开始出现。

我的活动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>

共有2个答案

申屠乐池
2023-03-14

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

王彭薄
2023-03-14

是的,你认为是正确的,你必须保留一些标志来确定视图中的哪些项目是可见的,哪些是不可见的。根据这一点,您必须设置视图。可见或View.GONE

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

 类似资料:
  • 当我在回收器视图中选择一个项目时,会自动选择多个项目 我正在做的是 我只想获取没有重复的联系人,并在recyclerview中列出所有联系人,并使两个文本视图可见(一个用于数字,第二个用于名称)。完成了,但问题是 当我点击一个项目时,它会被点击4次(例如,如果我点击一个项目,它会显示两个文本视图,但具有相同名称和编号的相同项目会显示出来,就像我点击了4个项目并看到图片一样) 适配器类 在那里我得到

  • 我有一个像这样的简单回收视图: 我在片段中的方法中添加了除法器: 我还有一个简单的适配器来保存这些项目。问题是,在我向上或向下滚动recyclerView之前,分隔线是不可见的。我试过了: 通过使用方法以编程方式滚动到最后一项和更新适配器中的项后的第一项。 添加NestedScrollView作为父级并滚动 通过对scrollView进行编程。 没什么帮助。分隔符仅在物理滚动后可见。最奇怪的是,我

  • 假设我单击2位置的项目(记住其布局是颠倒的),然后调用 通知项目已更改(2[位置]) 在onBindViewHolder中,我在单击的项目上显示一些视图,因此它的高度会发生变化,当RecyclView测量它的孩子时,它会意识到它应该移动一些项目以使该项目的高度变化看起来引人入胜))。DefaultItemAnimator会处理它,但它会将所有低于“U are??? Omg谢谢u”项目的孩子向下移动

  • 我正试图开发一个类似Gmail的功能,你可以滑动删除。这是我的回收器视图的主要片段。 这是我的助手 现在滑动recyclerview项目,并不是每次都调用onSwiped方法。我完全刷了这个项目。 编辑:添加的任何新项目都会成功删除,但已添加的项目不会被删除。 编辑2:适配器 感谢任何帮助。提前感谢。

  • 我正在从事一个自由职业者的android项目。我有一个问题,就是根据项目设计需要改变RecyclerView项目之间的利润率。我想显示屏幕上最后一个可见项目的一半,这样用户就可以猜测水平滚动。我尝试创建一个自定义的RecyclerView.itemEdition。当屏幕第一次打开时,一切正常,但当我开始在这个回收视图上水平滚动时,项目之间的间隔增加了,有时甚至减少了。我如何用一般方法解决这个问题。

  • 我想展开/折叠我的recyclerView项目,以显示更多信息。我想实现与SlideExpandableListView相同的效果。 基本上,在我的viewHolder中,我有一个不可见的视图,我想做一个平滑的展开/折叠动画,而不是将可见性设置为仅可见/消失。我一次只需要扩展一个项目,如果有一些提升来显示该项目已被选中,那就太酷了。 这与新的Android最近通话历史记录列表的效果相同。“回调”和