在 Recycler View 中,从 LinearLayoutManger 转换为 GridLayoutManager 没有区别

Posted

技术标签:

【中文标题】在 Recycler View 中,从 LinearLayoutManger 转换为 GridLayoutManager 没有区别【英文标题】:In Recycler View, converting from a LinearLayoutManger to GridLayoutManager makes no difference 【发布时间】:2020-10-16 15:02:26 【问题描述】:

我有一个使用 recyclerView 和 LinearLayoutManager 的 android 应用程序。我的印象是,将 LinearLayoutManager 更改为 GridLayoutManager(参见下面的注释行和下一行)只会给我一个网格。但是没有任何变化,我仍然看到线性列表,每行一项,一列。

    recyclerView = view.findViewById(R.id.item_setup_recycler_view);
    recyclerView.setHasFixedSize(true);
    //recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
    adapter = new ItemSetupRecyclerViewAdapter(getActivity(), kids);
    recyclerView.setAdapter(adapter);

在我看到网格之前,如果还有其他需要更改的地方,有人可以告诉我吗?

这是recyclerView的xml:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/feed_recycle_view"
    android:layout_
    android:layout_
    android:layout_marginBottom="8dp"
    android:clipToPadding="false"
    android:paddingBottom="74dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView8"
    app:layout_constraintVertical_bias="0.0">

</androidx.recyclerview.widget.RecyclerView>

提前致谢

【问题讨论】:

看看这个,可能你少了一步:***.com/questions/40587168/… 你能分享你的xml吗? @ChintanSoni 我刚刚做了。谢谢 看来你是为 item_setup_recycler_view 设置的,而不是你发布 feed_recycle_view 的 XML 【参考方案1】:

这样使用。 在你的 .xml

 <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_
        android:layout_ />

在您的代码中。

GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(),3);

gridLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);

然后把它交给你的 recyclerView。

或者你可以用一行来做:

recyclerView.setLayoutManager( new GridLayoutManager(getApplicationContext(),3,LinearLayoutManager.HORIZONTAL,false);)

【讨论】:

【参考方案2】:

您需要添加列表的方向和方向

recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),2, RecyclerView.VERTICAL, false));

【讨论】:

【参考方案3】:

感谢@Công Hải 的评论,我意识到我正在做的改变是唯一需要的改变。问题是我在我的应用程序中对错误的 recycleView 进行了更改。一旦我修改了正确的 recycleView,一切都按预期工作。

【讨论】:

以上是关于在 Recycler View 中,从 LinearLayoutManger 转换为 GridLayoutManager 没有区别的主要内容,如果未能解决你的问题,请参考以下文章

从 Cloud Firestore 检索时,Recycler View 未加载数据

当用户将手从屏幕上移开时,如何使 Recycler View 滚动缓慢而流畅?

如何使用 Recycler View 的长按位置获取 SQLite 列值?

使用 Recycler View 将房间数据库滚动到特定位置

如何突出显示 Recycler View 的选定项目?

使用 Recycler View 时如何在 Text To Speech 中实现错误处理