我如何可以限制RecyclerView显示的项目数量?
我可以限制量插入,如果我重写getChildCount
,但导致它只能插入该号码,然后停止。我希望它保持插入/滚动,但项目仅显示X号。
(注:每个项目的高度可以不同,所以它的限制是基于数量,而不是一些硬编码的价值是很重要的。)
里面你Recyclerview的适配器类;
private final int limit = 10;
@Override
public int getItemCount() {
if(ad_list.size() > limit){
return limit;
}
else
{
return ad_list.size();
}
}
可以简单地覆盖getCount()
方法和测试,如果适配器的数据阵列比“DESIRED_MAX”上级然后返回“DESIRED_MAX”否则只返回数据阵列长度或大小(阵列/ ArrayList的)
一种解决方案是将每个子的宽度编程,
@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;
}
如果你想让它保持插入/滚动,但项目仅显示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);
}
}
希望这可以帮助