如何限制RecyclerView项目数?

问题描述 投票:3回答:4

我如何可以限制RecyclerView显示的项目数量?

我可以限制量插入,如果我重写getChildCount,但导致它只能插入该号码,然后停止。我希望它保持插入/滚动,但项目仅显示X号。

(注:每个项目的高度可以不同,所以它的限制是基于数量,而不是一些硬编码的价值是很重要的。)

android android-recyclerview recycler-adapter recyclerview-layout
4个回答
5
投票

里面你Recyclerview的适配器类;

private final int limit = 10;


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

}

2
投票

可以简单地覆盖getCount()方法和测试,如果适配器的数据阵列比“DESIRED_MAX”上级然后返回“DESIRED_MAX”否则只返回数据阵列长度或大小(阵列/ ArrayList的)


1
投票

一种解决方案是将每个子的宽度编程,

@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;
    }

1
投票

如果你想让它保持插入/滚动,但项目仅显示X号,然后我有一个解决办法:setVisibility为可见光的X项目,其他就没了。

public static final class ViewHolder extends RecyclerView.ViewHolder {
    public ViewHolder(View view) {
        super(view);
        handleShowView(view);
    }

    private void handleShowView(View view) {
        if (getAdapterPosition() > X - 1) {
            view.setVisibility(View.GONE);
            return;
        }
        view.setVisibility(View.VISIBLE);
    }
}

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.