我有一个RecyclerView按预期工作,我尝试添加滑动以刷新布局,如下所示:
.submenu {
visibility: hidden;
opacity: 0;
position: fixed;
left: 0;
width: 100%;
}
.submenu .nav {
width: 100%;
position: absolute;
}
.solutions-link:hover .submenu {
opacity: 1;
visibility: visible;
}
RecyclerView工作正常,但没有刷卡刷新,然后我评论了我将线性布局管理器设置为RecyclerView并刷卡以刷新实现工作并调用 <android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/srl_contacts"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/senderContainer"
android:layout_below="@id/tv_connection_status">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_chat_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:padding="10dp"
android:paddingBottom="3dp"
android:paddingTop="3dp"
android:scrollbars="none"></android.support.v7.widget.RecyclerView>
</android.support.v4.widget.SwipeRefreshLayout>
接口的行
在java中:
OnRefresh()
可能是适配器的问题?我删除了我将适配器设置到RecyclerView的每一行,问题仍然存在,只有当我没有设置线性布局管理器时,刷卡才能刷新。
答案 0 :(得分:1)
使用RecyclerView属性"layoutManager"
在XML中设置布局管理器时使用的构造方法。
因为你没有在xml中使用它,我建议删除构造函数也删除 LinearLayoutManager ,因为它是必需的构造函数,并替换为 StaggeredGridLayoutManager 不传递构造函数,如:
StaggeredGridLayoutManager sglm =
new StaggeredGridLayoutManager(columnCount, StaggeredGridLayoutManager.VERTICAL);
mRvList.setLayoutManager(sglm);
OR 您可以在layououtManger
XML中设置recycleView
以用于您的案例布局管理器是线性的:
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_chat_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:padding="10dp"
android:paddingBottom="3dp"
android:paddingTop="3dp"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
android:scrollbars="none"></android.support.v7.widget.RecyclerView>
现在你可以像你使用的那样传递构造函数:
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
答案 1 :(得分:1)
经过一些调试后发现问题是RecyclerView元素,列表的第一个元素被隐藏(Visibility.gone)所以每次列表到达顶部列表时,linearLayoutManger都试图获得第一个Visible元素没有呈现,因此从未调用滑动刷新动画。