How To Show Fixed Count Of Items In Recyclerview?
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
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?"