So fügen Sie Trenner oder Abstandshalter mit Text zu einer Recycleransicht hinzu, die sich dynamisch an das StatusattribJava

Java-Forum
Anonymous
 So fügen Sie Trenner oder Abstandshalter mit Text zu einer Recycleransicht hinzu, die sich dynamisch an das Statusattrib

Post by Anonymous »

Ich habe eine RecylerView, die eine Liste von Daten anzeigt. Ich muss Trenner oder Abstandshalter hinzufügen, ich muss auch zwei Trenner oder Abstandshalter hinzufügen, damit ich Text [Anwesend und eingeladen] hinzufügen kann. Die Kopfzeile sollte sich dynamisch an den Status des in der Liste vorhandenen Elements anpassen. Wenn die Person der Gruppe beitritt, sollte sie von „Einladung“ zu „Präsentieren“ wechseln
Hinweis: Die Größe von Einladungen kann je nach Status des Elements vergrößert oder verkleinert werden und auch „Präsent“ sein.
Ich habe Folgendes erreicht, aber die Ausrichtung passt nicht für dynamische Änderungen. Zur Verdeutlichung sehen Sie sich bitte den Screenshot an:
https://i.sstatic.net/mssFl.gif

Code: Select all

SeparationDecorator
Klasse:

Code: Select all

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 : Alignment 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);
}
}
}

Code: Select all

MyGlobal.getPresentCount()
ist die Anzahl der gegenwärtigen Mitglieder.

Code: Select all

MyGlobal.getInviteCount()
ist die Anzahl der eingeladenen Mitglieder.
Sie ändern sich dynamisch.
Elementklasse:

Code: Select all

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 */
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post