我有一个显示数据列表的 RecylerView。我需要添加分隔符或间隔符,我还需要添加两个分隔符或间隔符,以便我可以添加文本[当前和邀请]标题应动态适应列表中存在的项目的状态。当此人加入聚会时,他们应该从邀请变为出席
** 注意:邀请的大小可以增加或减少,也可以根据项目的状态呈现 **
我已经实现了以下目标,但对齐方式不适合动态变化
SeparationDecorator 类:
public class SeparationDecorator extends RecyclerView.ItemDecoration {
private int textSize = 50;
private int groupSpacing = 100;
private static int printPresentAt;
private static int printInviteAt;
private Paint paint = new Paint();
{
paint.setTextSize(textSize);
}
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
// TODO : Allignment Problem
for (int i = 0; i < parent.getChildCount(); i++) {
View view = parent.getChildAt(i);
int position = parent.getChildAdapterPosition(view);
int present = MyGlobal.getPresentCount();
int invited = MyGlobal.getInviteCount();
if(present == 0 && invited>0){
SeparationDecorator.printPresentAt = invited;
SeparationDecorator.printInviteAt = 0;
} else if (present > 0 && invited>0) {
SeparationDecorator. printPresentAt = 0;
SeparationDecorator.printInviteAt = present;
} else if (present > 0 && invited == 0) {
SeparationDecorator.printPresentAt = 0;
SeparationDecorator.printInviteAt = present;
}
if (position == SeparationDecorator.printPresentAt) {
c.drawText("Present", view.getLeft(),
view.getTop() - groupSpacing + textSize, paint);
} else {
if(position == SeparationDecorator.printInviteAt) {
c.drawText("Invited", view.getLeft(),
view.getTop() - groupSpacing + textSize, paint);
}
}
}
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (parent.getChildAdapterPosition(view) == SeparationDecorator.printInviteAt
||parent.getChildAdapterPosition(view) == SeparationDecorator.printPresentAt) {
outRect.set(0, groupSpacing, 0, 0);
}
}
}
MyGlobal.getPresentCount() 是当前成员的数量 MyGlobal.getInviteCount() 是受邀成员的数量 ** 它们会动态变化 **
物品类别:
public class FriendsModel {
String userName;
String handleName;
int status;
/*
* 0 - Invited
* 1 - Accepted
*
* */
String fcm;
String uid;
public FriendsModel(String userName, String handleName, int status, String fcm, String uid) {
this.userName = userName;
this.handleName = handleName;
this.status = status;
this.fcm = fcm;
this.uid = uid;
}
public FriendsModel() {
}
@Override
public boolean equals(Object obj) {
FriendsModel model = (FriendsModel) obj;
if(this.uid.equals(model.uid))
return true;
return false;
}
/* All getters and setters */
}
需要重新连接适配器
recycleView.adapter = null
recycleView.adapter = adapter