Если приложение использует FireDac, то мне нравится использовать SQLiteIniFile
Лежит здесь:
C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Database\FireDAC\Samples\AddOn\SQLiteIniFile\FireDAC.Phys.SQLiteIniFile.pas
Это обертка вокруг ini файла с хранением в базе данных. Подходит для больших объемов и можно применять шифрование SQLite.
На Androide прекрасно работает
WorkFolder := TPath.GetDocumentsPath;
Options := TOptions.create(TPath.Combine(WorkFolder, 'Options.db'));
//TOptions это наследник TSQliteIniFile
Если Вы заполните Detail этого listboxitem, то увидите, почему обрезается текст: такие размеры и положение текста заданы в стиле 'listboxitemleftdetail'.
Размер картинки (ширина) тоже задана стилем. Чтобы обойти эти ограничения рекомендую создать свой стиль для listboxitem
думаю, вы упускаете этот момент
http://docwiki.embarcadero.com/RADStudio/Seattle/en/Zero-based_strings_(Delphi)
в андроид индексы в строках идут с 0, на десктопе - с 1
и, насколько я помню, все движется в сторону immutable strings, когда нельзя будет заменить конкретный символ в строке кроме как составлением новой строки
так что приводите свой алгоритм в соответствие с этими вводными
версия для Seatle ColorListView.zip
весь код для отрисовки кастомного цвета
1) копируем себе и открываем FMX.ListView
2) Ctrl+F -> DrawItemsFill
3) Вставляем код
// отрисовываем кастомный цвет...........................................
// procedure TListViewBase.DrawItemsFill(const StartItem.................
if TListViewItem(ListItem).Data['aUseCustomColor'].AsBoolean then
FBrush.Color := TListViewItem(ListItem).Data['aCustomColor'].AsInteger;
// ......................................................................
после
if FAlternatingColors and (AltIndex mod 2 = 1) then
FBrush.Color := FItemStyleFillAltColor;
4) Подключаем в своём проекте после стандартного FMX.ListView