Closed magical-xu closed 6 years ago
同求
嗯,往recyclerview里填充数据时肯定是有一个数据源的吧,假如用 itemlist 这个变量保存了recyclerview 里填充的所有数据,
判断是否是 ## 最后一条 只需要在 getDivider()中用 itemPosition,
if (itemPosition == itemlist.size()-1){
// 这是最后一条
return divider = new Y_DividerBuilder().create();
}
判断是否是 ## 第一条 :
if (itemPosition == 0){
// 这是第一条
return divider = new Y_DividerBuilder().create();
}
呃。gridview 判断最后一行 麻烦了点。
gridview的话,可以用 条目总数 对 每行数目取余,用余数来做判断。 比如 :假如条目数据源为 itemlist,gridview 每行3个,
switch ( itemlist.size() % 3 ){
case 0 :
// 表示最后一行有三个item,则处理最后一行时对这倒数三个item做处理
if (itemPosition == itemlist.size()-1 || itemPosition == itemlist.size()-2 || itemPosition == itemlist.size()-3){
return divider = new Y_DividerBuilder().create();
}
break ;
case 1 :
// 表示最后一行有一个item,则处理最后一行时对这倒数一个item做处理
if ( itemPosition == itemlist.size()-1 ){
return divider = new Y_DividerBuilder().create();
}
break ;
case 2 :
// 表示最后一行有两个item,则处理最后一行时对这倒数两个item做处理
if ( itemPosition == itemlist.size()-1 || itemPosition == itemlist.size()-2 ){
return divider = new Y_DividerBuilder().create();
}
break ;
}
实现倒是可以实现,但确实有点小麻烦
建议在您的 Y_DividerItemDecoration#getDivider() 抽象方法中 加个 是否为最后一个Item的参数
因为有些需求是头尾的 divider 不显示的