Pessoal, boa noite.
Gostaria de abrir um espaço e pedir uma grande ajuda para um código em Android que será imensamente repetitivo. Este código abaixo deverá ter 3 botões que farão a mesma ação (utilizarei métodos que irão diferir apenas no parâmetro passado ao serem chamados) e um textview (no caso linha1 e linha2) que irá ter um nome diferente a cada linha. No código eu postei apenas duas linhas, mas eu vou utilizar 32 linhas de código.
Minha dúvida é, a solução é apenas copiar e colar e retrabalhar tudo o que eu preciso? Existe alguma forma mais prática e simples de montar o código, mesmo porque ele irá sofrer adições ou remoções no tempo e posso não ser eu que vou fazer essa manutenção?
Se alguém tiver alguma experiência ou conhecer como eu simplifico isto eu fico imensamente grato! Criei esse aplicativo de aprendizado exatamente por não entender como é feito um código extenso, se é realmente repetitivo ou existem técnicas para simplificar isto.
Código:
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Linha1" />
<Button
android:id="@+id/buttonX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X" />
<Button
android:id="@+id/buttonY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Y" />
<Button
android:id="@+id/buttonZ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Z" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Linha2" />
<Button
android:id="@+id/buttonX2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X" />
<Button
android:id="@+id/buttonY2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Y" />
<Button
android:id="@+id/buttonZ2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Z" />
</LinearLayout>
<TextView
android:id="@+id/textViewRes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Botão Apertado:"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
MainActivity.java
package com.example.testebotoes;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button buttonX = (Button)findViewById(R.id.buttonX);
final Button buttonY = (Button)findViewById(R.id.buttonY);
final Button buttonZ = (Button)findViewById(R.id.buttonZ);
final Button buttonX2 = (Button)findViewById(R.id.buttonX2);
final Button buttonY2 = (Button)findViewById(R.id.buttonY2);
final Button buttonZ2 = (Button)findViewById(R.id.buttonZ2);
final TextView textViewRes = (TextView)findViewById(R.id.textViewRes);
buttonX.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
textViewRes.setText("Botão Apertado: Botão X");
}
});
buttonY.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
textViewRes.setText("Botão Apertado: Botão Y");
}
});
buttonZ.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
textViewRes.setText("Botão Apertado: Botão Z");
}
});
buttonX2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
textViewRes.setText("Botão Apertado: Botão X");
}
});
buttonY2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
textViewRes.setText("Botão Apertado: Botão Y");
}
});
buttonZ2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
textViewRes.setText("Botão Apertado: Botão Z");
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Muito obrigado e qualquer dúvida se não estiver claro tentarei explicar da melhor maneira possível.
)