如何限制RecyclerView 显示的项目数?
如果我覆盖getChildCount
,我可以限制插入的数量,但这会导致它只插入该数字然后停止。我希望它继续插入/滚动,但只有显示 X个项目。
(注意:每个项目的高度可能不同,因此限制基于数量而非某些硬编码值非常重要。)
答案 0 :(得分:2)
您可以简单地覆盖getCount()
方法并测试适配器数据阵列是否优于" DESIRED_MAX"然后返回" DESIRED_MAX"否则只返回数据数组的长度或大小(array / ArrayList)
答案 1 :(得分: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;
}
答案 2 :(得分:1)
如果你想让它继续插入/滚动,但只显示X个项目,那么我有一个解决方案:setVisibility
对于X项目是可见的,而其他是GONE。
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);
}
}
希望这会有所帮助
答案 3 :(得分:1)
在Recyclerview的适配器类内部;
private final int limit = 10;
@Override
public int getItemCount() {
if(ad_list.size() > limit){
return limit;
}
else
{
return ad_list.size();
}
}