如何限制RecyclerView中的项目数?

Ell*_*ica 5 android recycler-adapter android-recyclerview recyclerview-layout

如何限制RecyclerView 显示的项目数?

如果覆盖getChildCount,我可以限制插入的数量,但这会使它仅插入该数字然后停止。我希望它继续插入/滚动,但只显示 X个项目。

(注意:每个项目的高度都可以不同,因此,限制基于数量而不是某些硬编码值非常重要。)

jha*_*ane 8

在您的Recyclerview的适配器类中;

private final int limit = 10;


 @Override
public int getItemCount() {
    if(ad_list.size() > limit){
        return limit;
    }
    else
    {
        return ad_list.size();
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这可以提高代码的可读性:`return Math.min(ad_list.size(), limit)` (4认同)

Ran*_* KP 3

一种解决方案是以编程方式设置每个子项的宽度,

@Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.MY_ITEM_TO_INFALTE, parent, false);

        itemView.getLayoutParams().width = (int) (getScreenWidth() / NUMBERS_OF_ITEM_TO_DISPLAY); /// THIS LINE WILL DIVIDE OUR VIEW INTO NUMBERS OF PARTS

        return new MyCreationItemAdapter.MyViewHolder(itemView);
    }

    public int getScreenWidth() {

        WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);

        return size.x;
    }
Run Code Online (Sandbox Code Playgroud)