[verb た-form] + り + [verb た-form] + り + する [i-adj 〜い → 〜かった] + り + [i-adj 〜い → 〜かった] + り + する [na-adj] + だったり + [na-adj] + だったり + する [noun] + だったり + [noun] + だったり + する
たり~たりする gives a couple of actions as examples of what someone does: "things like A and B". Each verb goes into the た-form plus り, and する closes the list.
Whatever the た-form is, add り: たべる食べる becomes たべたり食べたり, のむ飲む becomes のんだり飲んだり, いく行く becomes いったり行ったり. The list doesn't have to be complete, and the order doesn't say which came first.
The た in たり doesn't mean past. The たり forms never change; する at the end carries past, negative and politeness, and takes endings such as たい and ないでください.
Each verb in the list takes たり, not just the first, and する stays at the end.
て-forms in a row give the whole sequence, in order. たり gives examples in no order.
These go beyond a list of activities.
Two opposite verbs or adjectives describe a state that keeps switching.
An い-adjective goes into its かった form, and a な-adjective or a noun takes だったり.
A single たり names one activity and hints at others. する is still needed.
In casual speech the closing する can drop out.