Мой вопрос вытекает из этого вопроса: Android: Как программно установить layout_constraintRight_toRightOf "parent" .
У меня написан следующий код, который должен ограничивать новый TextView либо слева (btnSendL), либо справа (btnSendR) ConstraintLayout.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ConstraintLayout clMessagesContainer = (ConstraintLayout) findViewById(R.id.clMessagesContainer);
final EditText txtMessage = (EditText) findViewById(R.id.txtMessage);
Button btnSendL = (Button) findViewById(R.id.btnSendL);
Button btnSendR = (Button) findViewById(R.id.btnSendR);
btnSendL.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
TextView lblNxtMessage = new TextView(MainActivity.this);
lblNxtMessage.setLayoutParams(new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT));
lblNxtMessage.setText(txtMessage.getText().toString());
clMessagesContainer.addView(lblNxtMessage);
ConstraintSet csL = new ConstraintSet();
csL.clone(clMessagesContainer);
csL.connect(lblNxtMessage.getId(), ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT, 0);
csL.connect(lblNxtMessage.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 0);
csL.applyTo(clMessagesContainer);
}
});
btnSendR.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
TextView lblNxtMessage = new TextView(MainActivity.this);
lblNxtMessage.setLayoutParams(new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT));
lblNxtMessage.setText(txtMessage.getText().toString());
clMessagesContainer.addView(lblNxtMessage);
ConstraintSet csR = new ConstraintSet();
csR.clone(clMessagesContainer);
csR.connect(lblNxtMessage.getId(), ConstraintSet.RIGHT, ConstraintSet.PARENT_ID, ConstraintSet.RIGHT, 0);
csR.connect(lblNxtMessage.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 0);
csR.applyTo(clMessagesContainer);
}
});
}
Однако, каждый раз, когда я нажимаю любой из них, это делается для всех уже созданных TextView, а не только для TextView, созданного внутри самого последнего onClickListenerMethod. Как я могу это исправить?