Skip to content Skip to sidebar Skip to footer

How To Show Fixed Count Of Items In Recyclerview?

I have a task to show fixed count of items on the screen. It doens't mean that I have fixed size of list, it means that only 5 items should be visible when scrolling. How it can be

Solution 1:

I also encountered a similar problem. I have solved it almost perfectly. I chose to extend LinearLayoutManager.

publicclassMaxCountLayoutManagerextendsLinearLayoutManager {

    privateintmaxCount= -1;

    publicMaxCountLayoutManager(Context context) {
        super(context);
    }

    publicMaxCountLayoutManager(Context context, int orientation, boolean reverseLayout) {
        super(context, orientation, reverseLayout);
    }

    publicMaxCountLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    publicvoidsetMaxCount(int maxCount) {
        this.maxCount = maxCount;
    }

    @OverridepublicvoidsetMeasuredDimension(int widthSize, int heightSize) {
        intmaxHeight= getMaxHeight();
        if (maxHeight > 0 && maxHeight < heightSize) {
            super.setMeasuredDimension(widthSize, maxHeight);
        }
        else {
            super.setMeasuredDimension(widthSize, heightSize);
        }
    }

    privateintgetMaxHeight() {
        if (getChildCount() == 0 || maxCount <= 0) {
            return0;
        }

        Viewchild= getChildAt(0);
        intheight= child.getHeight();
        finalLayoutParamslp= (LayoutParams) child.getLayoutParams();
        height += lp.topMargin + lp.bottomMargin;
        return height*maxCount+getPaddingBottom()+getPaddingTop();
    }
}

How to use:

# in kotlin
rcyclerView.layoutManager = MaxCountLayoutManager(context).apply { setMaxCount(5) }

But the height of each item needs to be the same, because I only considered the height and margin of the first item.

Solution 2:

If i am getting your question correctly, you are trying to show a fixed number of list items on the screen, whenever the user stops scrolling.

This can be done by calculating screen height/width and then setting your list item layout dimensions(height/width), accordingly.

view.getLayoutParams().width = getScreenWidth() / VIEWS_COUNT_TO_DISPLAY;

Now, depending on whether you want a horizontal or a vertical list, change width or height values of your list item layout.

Check these links

RecyclerView number of visible items

How to show exact number of items in RecyclerView?

Solution 3:

Simplest solution is to have onBindViewHolder() set its views height/width dynamically. For vertical list:

float containerHeight = mRecyclerView.getHeight();
holder.itemView.setMinimumHeight(Math.round(containerHeight/5));

Post a Comment for "How To Show Fixed Count Of Items In Recyclerview?"