A Collapsible Panel bound to a list is repeated once per element; every repetition has the same control names, so page.ui.get("Text1") only returns the first one. Address the instance you need through the list index or through the repeating parent.
1. Path addressing with the index (UI Toolkit / Spark syntax): a control inside a repeated container is reachable as Parent[i]/Child:
// third panel (index 2) of the repeated collapsible panel "Panel", its text control "Amount"
var amount = page.ui.get("Panel[2]/Amount");
amount.setData("1250.00");
amount.setValid(false, "Amount exceeds the limit");2. Loop over all repetitions when the decision depends on the data of each row:
var rows = page.ui.get("Panel"); // the repeating parent
var n = rows.getRecordCount ? rows.getRecordCount() : ${Panel}.getData().length;
for (var i = 0; i < n; i++) {
var txt = page.ui.get("Panel[" + i + "]/Amount");
var item = ${Panel}.getData()[i]; // the bound list element of this repetition
if (item.status === "OVERDUE") txt.setColorStyle("E"); // red
}3. From inside the panel itself (an event handler of a control in the same repetition) use relative addressing: me.ui.get("../Amount") resolves within the current repetition, and me.context.binding.get("value") gives the element of the list the repetition is bound to - no index needed.
Give the controls in the panel unique control ids (the Control Id field of the properties), the label is not the id.
References