To be perfectly frank, and considering all the boiler plate required for a comparer based approach, it may just be simplest to write your own search routine:
type
TActivityCategoryList = class(TList)
public
function Find(const Name: string): Integer;
end;
function TActivityCategoryList.Find(const Name: string): Integer;
begin
for Result := 0 to Count-1 do
if Self[Result].Name=Name then
exit;
Result := -1;
end;