RecyclerView:根据屏幕方向使用不同的 LayoutManager 和项目结构

Aut*_*Cat 1 android android-recyclerview

我正在recyclerview使用不同的元素定位(横向的网格和纵向的列表)和不同.xml的项目结构。

对于第一部分,我在简单的方向检查onCreateView()方法中看到了解决方案:

 switch (getResources().getConfiguration().orientation) {
            case 1:
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                break;
            case 2:
                recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),2));
                break;
        }
Run Code Online (Sandbox Code Playgroud)

但对于第二部分,我有疑问。最简单的方法是将 LayoutManager 作为构造函数参数传递给 Adapter 并onCreateViewHolder()使用instanceof运算符检查布局。但它看起来不是很好或正确的解决方案。

那么,对于这种情况,有什么共同的模式或更好的方法吗?

ans*_*dig 5

要根据屏幕方向提供不同的布局资源文件,您可以创建名为 layout-land(横向)和 layout-port(纵向)的资源文件夹,系统会自动处理其余部分。提示:您不需要两个文件夹。如果您的默认方向是纵向,那么只需为横向模式创建 layout-land 文件夹。布局资源文件必须具有相同的名称!