@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;
}
7条答案
按热度按时间67up9zun1#
在Recyclerview的适配器类中;
pprl5pva2#
一种解决方案是编程地设置每个子节点宽度,
nnsrf1az3#
在适配器中,只需设置一个限制,
vsmadaxz4#
您可以简单地覆盖
getCount()
方法并测试适配器数据数组是否上级“DESIRED_MAX”,然后返回“DESIRED_MAX”,否则仅返回数据数组尺子或大小(array/ArrayList)46qrfjad5#
如果你想让它保持插入/滚动,但只显示X个项目,那么我有一个解决方案:X项的
setVisibility
更改为VISIBLE,其他项已删除。希望这能有所帮助
14ifxucb6#
你能做的就是在回收器视图中找到一个列表项所需的dp。150 dp件/件。
然后在XML:
这意味着如果回收器视图中的项目数〈300 dp/大约2个,它将 Package 内容,但如果超过300 dp/超过2个项目,它将回收整个视图,同时一次显示2个。
ymdaylpp7#
***从01/2023(androix,recyclerview等)最新的库警告这“可能”已经工作,但也许不再...
我仍在调查,但这似乎导致了例外:
第二次我加载更多的项目到列表中,然后“mListLimit”允许,它崩溃了我的应用程序。我必须加载itemcount〉mlistlimit一次,上面的行将抛出提到的异常。如果我只是用途:
那我就没有例外了。请注意,现在它必须有非常具体的值:listlimit是300,我加载20个项目,然后我加载1000,这会导致允许列表“溢出”,只有这样它才会崩溃。
也许这能帮上忙。