У меня есть RecylerView, отображающий список данных. Мне нужно добавить разделители или разделители, а также два разделителя или разделителя, чтобы я мог добавить текст [Присутствует и Приглашенный], заголовок должен динамически адаптироваться к статусу элемента, присутствующего в списке. Когда человек присоединяется к группе, он должен перейти от приглашения к представлению.
Примечание: размер приглашений может увеличиваться или уменьшаться, а также быть представлен в зависимости от статуса элемента.
Я добился следующего, но выравнивание не подходит для динамических изменений. Для ясности обратитесь к скриншоту:
https://i.sstatic.net/mssFl.gif
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 : 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);
}
}
}
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 */
}
Подробнее здесь: https://stackoverflow.com/questions/772 ... cally-adap
Как добавить разделители или разделители с текстом в представление recyclerview, которое динамически адаптируется к атри ⇐ Android
Форум для тех, кто программирует под Android
1761773453
Anonymous
У меня есть RecylerView, отображающий список данных. Мне нужно добавить разделители или разделители, а также два разделителя или разделителя, чтобы я мог добавить текст [Присутствует и Приглашенный], заголовок должен динамически адаптироваться к статусу элемента, присутствующего в списке. Когда человек присоединяется к группе, он должен перейти от приглашения к представлению.
[b]Примечание[/b]: размер приглашений может увеличиваться или уменьшаться, а также быть представлен в зависимости от статуса элемента.
Я добился следующего, но выравнивание не подходит для динамических изменений. Для ясности обратитесь к скриншоту:
https://i.sstatic.net/mssFl.gif
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 : 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);
}
}
}
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 */
}
Подробнее здесь: [url]https://stackoverflow.com/questions/77248725/how-to-add-dividers-or-spacers-with-text-to-a-recylerview-which-dynamically-adap[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия