How to set LayoutManager for RecyclerView in Android

家住魔仙堡 提交于 2020-01-02 08:11:31

问题


In my application I want show some RecyclerViews.
I want show 3 item in one row, I my application should use 4 recyclerView because each recyclerVews each data other API.

In one of RecyclerView I can show 3 Item in one row, and I should show another 3 recyclerViews above of this RecyclerView.

Please see this image to understand my mean :

I write below code in Java :

if (movieResponse.getData().getStars().size() > 0) {
                            starsModel.clear();
                            starsModel.addAll(movieResponse.getData().getStars());
                            castAdapter = new CastAdapter(context, starsModel);
                            infoEpisodeFrag_CastRecyclerView.setLayoutManager(new GridLayoutManager(context, 3));
                            infoEpisodeFrag_CastRecyclerView.setHasFixedSize(true);
                            infoEpisodeFrag_CastRecyclerView.setNestedScrollingEnabled(false);
                            infoEpisodeFrag_CastRecyclerView.setAdapter(castAdapter);
                        } else {
                            goneView(infoEpisodeFrag_CastRecyclerView);
                        }
                        //Get Directors
                        if (movieResponse.getData().getDirectors().size() > 0) {
                            directorsModel.clear();
                            directorsModel.add(movieResponse.getData().getDirectors().get(0));
                            directorAdapter = new DirectorAdapter(context, directorsModel);
                            infoEpisodeFrag_DirectorRecyclerView.setLayoutManager(new GridLayoutManager(context, 1));
                            infoEpisodeFrag_DirectorRecyclerView.setHasFixedSize(true);
                            infoEpisodeFrag_DirectorRecyclerView.setNestedScrollingEnabled(false);
                            infoEpisodeFrag_DirectorRecyclerView.setAdapter(directorAdapter);
                        } else {
                            goneView(infoEpisodeFrag_DirectorRecyclerView);
                        }
                        //Get Writers
                        if (movieResponse.getData().getWriters().size() > 0) {
                            writersModel.clear();
                            writersModel.add(movieResponse.getData().getWriters().get(0));
                            writerAdapter = new WriterAdapter(context, writersModel);
                            infoEpisodeFrag_WriterRecyclerView.setLayoutManager(new GridLayoutManager(context, 1));
                            infoEpisodeFrag_WriterRecyclerView.setHasFixedSize(true);
                            infoEpisodeFrag_WriterRecyclerView.setNestedScrollingEnabled(false);
                            infoEpisodeFrag_WriterRecyclerView.setAdapter(writerAdapter);
                        } else {
                            invisibleView(infoEpisodeFrag_WriterRecyclerView);
                        }
                        //Get Writers2
                        if (movieResponse.getData().getWriters().size() > 0) {
                            writersModel.clear();
                            writersModel.add(movieResponse.getData().getWriters().get(0));
                            writerAdapter = new WriterAdapter(context, writersModel);
                            infoEpisodeFrag_WriterRecyclerView2.setLayoutManager(new GridLayoutManager(context, 1));
                            infoEpisodeFrag_WriterRecyclerView2.setHasFixedSize(true);
                            infoEpisodeFrag_WriterRecyclerView2.setNestedScrollingEnabled(false);
                            infoEpisodeFrag_WriterRecyclerView2.setAdapter(writerAdapter);
                        }

My XML code:

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/infoEpisodeFrag_DirectorRecyclerView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/infoEpisodeFrag_CastLay"
                    android:layout_marginBottom="@dimen/padding5" />

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/infoEpisodeFrag_WriterRecyclerView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/infoEpisodeFrag_CastLay"
                    android:layout_marginBottom="@dimen/padding5"
                    android:layout_toRightOf="@+id/infoEpisodeFrag_DirectorRecyclerView" />

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/infoEpisodeFrag_WriterRecyclerView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/infoEpisodeFrag_CastLay"
                    android:layout_marginBottom="@dimen/padding5"
                    android:layout_toRightOf="@+id/infoEpisodeFrag_WriterRecyclerView"
                    android:visibility="visible" />

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/infoEpisodeFrag_CastRecyclerView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/infoEpisodeFrag_WriterRecyclerView"
                    android:layout_marginBottom="@dimen/padding5" />

How to show 3 up recyclerview's items align by under recyclerView?


回答1:


Use Horizontal RecyclerView instead of Grid and pass only 3 items with using starsModel.subList(0,3);

castAdapter = new CastAdapter(context, starsModel.subList(0,3));
LinearLayoutManager layoutManager= new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
infoEpisodeFrag_DirectorRecyclerView.setLayoutManager(layoutManager);


来源:https://stackoverflow.com/questions/45564392/how-to-set-layoutmanager-for-recyclerview-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!