Android 如何限制RecyclerView中的项目数?

Android 如何限制RecyclerView中的项目数?,android,android-recyclerview,recyclerview-layout,Android,Android Recyclerview,Recyclerview Layout,如何限制RecyclerView显示的项目数 如果我覆盖getChildCount,我可以限制插入的数量,但这会导致它只插入该数字,然后停止。我希望它保持插入/滚动,但只显示X个项目 (注意:每个项目的高度可能不同,因此限制基于数量而不是某些硬编码值是很重要的。)一种解决方案是以编程方式设置每个子项的宽度 @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { V

如何限制RecyclerView显示的项目数

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


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

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

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

您可以简单地重写
getCount()
方法并测试适配器数据数组是否优于“所需的\u MAX”,然后返回“所需的\u MAX”,否则只需返回数据数组长度或大小(数组/ArrayList)

就可以继续插入/滚动,但只显示X个项目,然后我有了一个解决方案:
setVisibility
to visibility for X items,而另一个则消失了

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

希望这对您的Recyclerview的适配器类有所帮助

private final int limit = 10;


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

}

不,这是不好的,因为它会在所需的最大值被点击后停止添加新项目。这与@mohamed aouled issa提到的答案相同。nice answer@jhashane如果项目是按限制显示的,你能帮上忙吗?如果用户单击按钮,我们如何显示更多列表。??我认为这会提高代码的可读性:
返回Math.min(ad_list.size(),limit)