Codewaves / Sticky-Header-Grid

Sticky header grid layout manager for RecycleView
MIT License
116 stars 33 forks source link

Recyclerview and Viewpager as an Item of Sticky Header #9

Closed orhunkupeli7 closed 6 years ago

orhunkupeli7 commented 6 years ago

Hi,

I have a performance issue especially API 19-20-21. I have a Viewpager and four horizontal recyclerview's which has different views inside my main recyclerview which has a adapter that extends StickyHeaderGridAdapter. While scrolling up and down if screen contains the sub recyclerviews or viewpager, frame drops.

Here is my implementation for recyclerviews. Is there any way to improves its performance. Because of the recyclers' views are different I can't use the same viewpool for them.

`final ViewHolderLowerRecyclerSlider lowerSlider = (ViewHolderLowerRecyclerSlider) viewHolder; final LinearLayoutManager lowerSliderMan = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); lowerSlider.rvMainPageSlider.post(new Runnable() { @Override public void run() { LowerCuffAdapter upperCuffAdapter = new LowerCuffAdapter(context, mData.get(section).getItems(), new MainPageAdapterClick() { @Override public void onItemClick(NewsItemsModel newsItem) { clickListener.onItemClick(newsItem); } }); lowerSlider.rvMainPageSlider.setLayoutManager(lowerSliderMan); lowerSlider.rvMainPageSlider.addItemDecoration(new CustomItemDecorationHorizontal(5, 10, 5, 10)); lowerSlider.rvMainPageSlider.setAdapter(upperCuffAdapter); } });

        lowerSlider.rvFinance.post(new Runnable() {
            @Override
            public void run() {
                FinanceAdapter financeAdapter = new FinanceAdapter(context, financeList);
                LinearLayoutManager financeLayManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
                lowerSlider.rvFinance.setLayoutManager(financeLayManager);
                lowerSlider.rvFinance.setAdapter(financeAdapter);
            }
        });

        lowerSlider.rvWeather.post(new Runnable() {
            @Override
            public void run() {
                LinearLayoutManager weatherLayManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
                WeatherAdapter weatherAdapter = new WeatherAdapter(context,list);

                lowerSlider.rvWeather.setLayoutManager(weatherLayManager);
                lowerSlider.rvWeather.setAdapter(weatherAdapter);
            }
        });`
Codewaves commented 6 years ago

It is hard to say without seeing full code. StickyHeaderLayout supports all RecyclerView caching mechanisms. Maybe your header/item views are to complicated and measure/layout takes to much time or even trigger updates on inner recyclerview.