Перейти к содержанию
  • Регистрация
Равиль Зарипов (ZuBy)

[Обзор] #3 ModernListView - динамическая подгрузка контента

Рекомендуемые сообщения

Ссылка: http://blog.rzaripov.kz/2016/12/3-modernlistview.html

Автор: Зарипов Равиль @ZuBy

Описание:  Реализация динамической подгрузки контента:

  • Бесконечный скроллинг (например как лента в ВК)
  • Паджинация/Пагинация (постраничная загрузка)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Настоящий программист!

Даже на выходных обновляет свой продукт :rolleyes:

P.S. Спасибо за ответы в личке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет! хотел скомпилить, выводит ошибку [dcc32 Fatal Error] FMX.ListView.pas(21): F2051 Unit FMX.ListView.Adapters.Base was compiled with a different version of FMX.ListView.Types.TListItem

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, Ерлан сказал:

Привет! хотел скомпилить, выводит ошибку [dcc32 Fatal Error] FMX.ListView.pas(21): F2051 Unit FMX.ListView.Adapters.Base was compiled with a different version of FMX.ListView.Types.TListItem

Какая версия студии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Ерлан сказал:

Delphi 10.2 Токио

Эта статья была для Берлина

там есть папка tokyo файлы из нее перенести в проект

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Равиль Зарипов (ZuBy) сказал:

Эта статья была для Берлина

там есть папка tokyo файлы из нее перенести в проект

Рахмад, Равиль! Сбилдил, все заработало! Привет с Караганды)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день! Использую ModernListView в проекте. Не удается привязать к нему данные с помощью LiveBindings. Выдает ошибку

 F2051 Unit Fmx.Bind.Editors was compiled with a different version of FMX.ListView.TCustomListView

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.05.2017 в 14:27, Ерлан сказал:

Добрый день! Использую ModernListView в проекте. Не удается привязать к нему данные с помощью LiveBindings. Выдает ошибку

 F2051 Unit Fmx.Bind.Editors was compiled with a different version of FMX.ListView.TCustomListView

 

dcu файлы LiveBindings нужно пересобирать с новым TListView, но не пробовал сам, т.к не пользуюсь LB

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в принципе это обычная практика когда меняешь стандартные компоненты, складывать модули которые не могут собраться рядом с измененным исходником. то есть ругается на Fmx.Bind.Editors берешь его и кидаешь рядом с FMX.ListView.pas, и так далее. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От Виталий Иванов
      Есть такая идея. 
      Загружаю в TListView много элементов (от 500 до 1000 может и более) ситуация вынуждает грузить именно столько . Так вот когда начинаю создавать их кастомно после создания приходится вызвать oItem.Adapter.ResetView(oItem) (Если этого не делать то не корректно рассчитывается высота и ещё пару багов )  что соответсвенно вызывает подвисание интерфейса на Windows все круто это не так в глаза бросается, а на Android печалька форма зависает от 10 до 30 секунд 
      Так вот сам вопрос можно ли как это сделать в отдельном потоке что бы пользователю показывать какой нибудь Waiter. Или может кто как по другому предложит реализовать ? 
      Смотрел в сторону динамической подгрузки итемов но хотелось бы что и его поиск работал . 
    • От Alex Bozhko
      Вопрос из серии "чего-то странного хочется".
      Предположим, я хочу написать собственный ListView. Если я наследую от TListView, то всё нормально. Я его регистрирую с помощью процедуры Register
      Примерно так:
      procedure Register; begin RegisterComponents('<Моя вкладка>', [TМойListView]); end; И всё работает.
      Но, как показывает практика, в том числе пример Равиля Зарипова (https://github.com/rzaripov1990/ModernListView) для того, что бы написать полноценный ListView, наследоваться надо от предков TListView, едва ли не от TStyledControl.
      Дальше возникает вопрос. Где и как правильно регистрировать вновь созданный компонент?
      Если зарегистрировать компонент с помощью процедуры Register, то при размещении компонента на форме в окне Structure к вновь созданному компоненту не привязывается ItemAppearence.

       
      Да и IDE падает.
      Прилагаю файл с кастомным ListView. Сделан по аналогии с оригинальным, изменены только названия.
       
       
      My.FMX.ListView.zip
    • От Виталий Иванов
      Вопрос к экспертам
      Возникла необходимость и хотел спросить можно ли как-то сделать TlistViewItem  прозрачным, а то получается что сам TlistView может быть прозрачным а его итем нет . Это как-то же делаться у TListBoxItem. 
      Заранее огромное спасибо.
    • От x11
      ListView в режиме appearance.
      Добавил пару TListItemGlyphButton, указал в свойстве ButtonType - CheckBox. Но при работе приложения - пустота.
      Другие типы кнопок тоже не отображает.
      ЧЯДНТ.
    • От x11
      По совету krapotkin`a
      http://fire-monkey.ru/topic/4595-listview-скрывает-повторяющийся-текст-заголовков/?do=findComment&comment=29209
       
      Забросил LiveBinding при заполнении TListView и начал заполнять ручками.
      Почти всё хорошо за исключением загрузки картинки из базы.
      При использовании LiveBinding картинка грузилась, а теперь просто пустота.
      На Windows картинки грузятся и отображаются, а на Андроиде не хотят.
       
      Вот часть кода загрузки
      Var stream: TBlobStream; ... begin .... lv.BeginUpdate; try lv.Items.Clear; qObjects2.close; qObjects2.Open; while not qObjects2.Eof do begin item := lv.Items.Add; item.Data[sItemId] := qObjects2id.AsString; item.Data[sItemPrice] := qObjects2price.AsString; item.Data[sItemType] := qObjects2type_name.Value; ... ... ... ListItemImage := Item.Objects.FindObjectT<TListItemImage>(sItemImg); stream := TBlobStream.Create(qObjects2img, bmRead); try if stream.Size <= 0 then ListItemImage.ImageIndex := 0 else ListItemImage.Bitmap := TBitmap.CreateFromStream(stream); finally stream.Free; end;  
      К ListView прикреплен список картинок, где есть картинка-пустышка, которая грузится, если у записи нет картинки.
      вот этой строкой ListItemImage.ImageIndex := 0
      картинки-пустышки нормально отображаются и на Андроид-устройстве в том числе.
      Ошибок нет, а просто пустой TListItemImage там, где должна быть картинка.
      Может, я какое-то свойство забыл включить у TListItemImage?
      При отладке видно, что картинка загружается из базы.
       
       
    • От x11
      Сделал такой эксперимент в событии OnUpdateObjects
      if AItem.Purpose in [TListItemPurpose.Header] then Memo1.Lines.Add(AItem.Text);  
      И в memo загрузилось в два раза больше строк, чем элементов списка.
      Это нормально, так и должно быть?
    • От x11
      Через LiveBinding загружаются данные в ListView, в том числе и в ListItemImage.
      Но у некоторых Item`ов нет картинки. И в этом случае нужно показать "пустышку" типа No image.
      Делаю в событии UpdateObjects
      procedure TfmMain.lvObjectsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var ListItemImage: TListItemImage; begin if Assigned(AItem) then begin ListItemImage := AItem.Objects.FindObjectT<TListItemImage>('img'); if Assigned(ListItemImage) then if not assigned(ListItemImage.Bitmap) then ListItemImage.ImageIndex := 0; end; end;  
      Но теперь у всех ListItemImage отображается пустышка, даже там, где должна быть правильная картинка.
      Пробовал использовать событие UpdatingObjects, но в этом случае грузится правильная картинка, а пустышка не грузится.
    • От x11
      В TListView есть картинка и другие поля. В поля уже выводятся данные из таблицы с помощью LiveBinding.
      Добавил новое поле в DataSet типа TBlobField, но LiveBinding Designer это поле не отображает, не видит его, поэтому и к картинке не могу привязать.
      Так и должно быть или это баг?
    • От x11
      1. Почему кнопка располагается во время работы программы не так, как я её расположил в дизайне?
      2. Как привязать кнопку к правому краю? Если установить "Trailing" в свойстве Align, то кнопка вообще исчезает.
       
       


    • От x11
      Данные в ListView грузятся из таблицы через BindSourceDB1.
      Добавил кнопку TImageObjectAppearance, но у кнопки нет свойства, отвечающего за картинку. Как добавить картинку в моём случае?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...