RecyclerView как изменить размер?

372
05 марта 2017, 06:22

Как сделать так чтобы RecyclerView менял размер списка, тобишь сжимался.

Дело в том что после добавления RecyclerView я добавил еще и обычный view (Сделал что то подобие Footer для RecyclerView).

Когда удаляешь из RecyclerView какой то элемент то он удаляется. Но значение Height не изменяется. И получается что Viewшка который под RecyclerView лежит. Он не двигается.

Нашел такой метод hasfixedsize он поможет решить мою проблему или есть что - то другое?

Answer 1

Можно добавить футер как последний элемент самого RecyclerView. Можно выделить новый класс RecyclerItem с булевым полем isFooter, обернуть все итемы в него, положить в массив и в конце добавить recyclerItem с isFooter = true. Получившийся массив использовать для инициализации адаптера. Затем надо описать альтернативный макет для футера, например footer_item.xml и переопределить getItemViewType() адаптера вроде:

@Override
    public int getItemViewType(int position) {
        return items.get(position).isFooter ? 1 : 0;
    }

в onCreateViewHolder() адаптера ввести условие, при котором если viewType элемента равен 1 (isFooter == true), привязывать к холдеру соответствующий макет:

@Override    
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        RelativeLayout itemLayout;
        switch (viewType) {
            case 0:
                itemLayout = (RelativeLayout)LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.task_item, parent, false);
                break;
            case 1:
                itemLayout = (RelativeLayout)LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.footer_item, parent, false);
        }
        return new ViewHolder(itemLayout, viewType);
    }

ну и в onBindViewHolder() аналогично привязывать данные в зависимости от типа элемента:

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    switch (holder.viewType) {
        case 0:
            //для обычного элемента
            break;
        case 1:
            //для футера
    }
}
READ ALSO
CMS Jahia 7. Не удается получить доступ к сайту

CMS Jahia 7. Не удается получить доступ к сайту

Ребята нужна помощьПытаюсь установить СMS jahia 7 на Windows 7

311
Можно ли реализовать в Hibernate?

Можно ли реализовать в Hibernate?

База данных содержит в себе множество одинаковых таблиц которые отличаются только именемМожно ли создать модель в Hibernate, которая может работать...

227
WPF. Не привязывается модель

WPF. Не привязывается модель

Суть в том, что не могу привязать в xaml модель, созданную во viewmodelЕсли модель получается из SelectedItem ListBox'а, то все норм

216
Как дождаться загрузки BitmapImage?

Как дождаться загрузки BitmapImage?

Есть BitmapImage и у него есть проблемаЕго нельзя просто создать

239