Search code examples
androiddelphidelphi-xe5

Delphi XE5 Android : how to make each listview item have its own template?


Is there a way to make the TListView of Delphi to behave like actual ListView in android? for example each item of the list has its own "View" and in that view can be multiple other views(components) like multiple text boxes and check boxes and ...?

enter image description here


Solution

  • Yes there is a way. I make it by using these two methods. The CreateItem method is where you put the components you want in the listitem.

    procedure TForm1.CreateItem;
    var
    edit1:TClearingEdit;
    editCalendar1:TCustomCalendarEdit;
    begin
      edit1:= TClearingEdit.Create(Self);
      edit1.Parent := fItem;
      edit1.Align := TAlignLayout.alClient;
      edit1.Text := 'Blabla';
      edit1.OnChange := actEdit1OnChange;
    
      editCalendar1 := TCalendarEdit.Create(Self);
      editCalendar1.Parent := fItem;
      editCalendar1.Align := TAlignLayout.alRight;
      editCalendar1.Width := 90;
      editCalendar1.Date := Date;
      editCalendar1.OnChange := actEditCalOnChange;
    end;
    
    procedure TForm1.CreateListItem;
    begin
      fItem:= TListBoxItem.Create(your_listbox);
      fItem.Parent := your_listbox; //Here you put the ListBox as a parent
      fItem.Align := TAlignLayout.alTop;
      fItem.Text := '';
      fItem.Height := 50;
    
      CreateItem;
    end;
    

    To add a custom item to the list just call the CreateListItem method! Next to this I use the OnChange method to receive data here is an example:

    procedure TForm1.actEditCalOnChange(Sender: TObject);
    begin
      label1.text := TCalendarEdit(Sender).Text;
    end;
    
    procedure TForm1.actEdit1OnChange(Sender: TObject);
    begin
      label2.text := TClearingEdit(Sender).Text;
    end;