Witam posiadam wiele przycisków w apce i do każdego z osobna przypisuję SetOnClickListener'a a co za tym idzie zajmuje to wiele miejsca w kodzie. Potrzebuje to zrobić krócej, jakieś tablice? pętle? Nie mam pomysłu.. :/
To jest kod obecny:
//BUTTONS
btn_1x1_minus = (Button) findViewById(R.id.btn_minus_1x1);
btn_1x1_plus = (Button) findViewById(R.id.btn_plus_1x1);
btn_1x2_minus = (Button) findViewById(R.id.btn_minus_1x2);
btn_1x2_plus = (Button) findViewById(R.id.btn_plus_1x2);
btn_1x3_minus = (Button) findViewById(R.id.btn_minus_1x3);
btn_1x3_plus = (Button) findViewById(R.id.btn_plus_1x3);
btn_2x1_minus = (Button) findViewById(R.id.btn_minus_2x1);
btn_2x1_plus = (Button) findViewById(R.id.btn_plus_2x1);
btn_2x2_minus = (Button) findViewById(R.id.btn_minus_2x2);
btn_2x2_plus = (Button) findViewById(R.id.btn_plus_2x2);
btn_2x3_minus = (Button) findViewById(R.id.btn_minus_2x3);
btn_2x3_plus = (Button) findViewById(R.id.btn_plus_2x3);
btn_3x1_minus = (Button) findViewById(R.id.btn_minus_3x1);
btn_3x1_plus = (Button) findViewById(R.id.btn_plus_3x1);
btn_3x2_minus = (Button) findViewById(R.id.btn_minus_3x2);
btn_3x2_plus = (Button) findViewById(R.id.btn_plus_3x2);
btn_3x3_minus = (Button) findViewById(R.id.btn_minus_3x3);
btn_3x3_plus = (Button) findViewById(R.id.btn_plus_3x3);
btn_4x1_minus = (Button) findViewById(R.id.btn_minus_4x1);
btn_4x1_plus = (Button) findViewById(R.id.btn_plus_4x1);
btn_4x2_minus = (Button) findViewById(R.id.btn_minus_4x2);
btn_4x2_plus = (Button) findViewById(R.id.btn_plus_4x2);
btn_4x3_minus = (Button) findViewById(R.id.btn_minus_4x3);
btn_4x3_plus = (Button) findViewById(R.id.btn_plus_4x3);
private void listeners()
{
//BUTTONS
btn_1x1_minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (canChange) {
if (products.getProduct_1x1() > 0) {
products.setProduct_1x1(products.getProduct_1x1() - 1);
textView_1x1.setText(Integer.toString(products.getProduct_1x1()));
Toast.makeText(getApplicationContext(), "Odjęto element z: " + textViewPos_1x1.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), textViewPos_1x1.getText() + " nie może być mniejsze od 0! ", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
btn_1x1_plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (canChange) {
if (products.getProduct_1x1() < MAX_PRODUCTS) {
products.setProduct_1x1(products.getProduct_1x1() + 1);
textView_1x1.setText(Integer.toString(products.getProduct_1x1()));
Toast.makeText(getApplicationContext(), "Dodano element do: " + textViewPos_1x1.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), textViewPos_1x1.getText() + " jest pełne! ", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
btn_1x2_minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (canChange) {
if (products.getProduct_1x2() > 0) {
products.setProduct_1x2(products.getProduct_1x2() - 1);
textView_1x2.setText(Integer.toString(products.getProduct_1x2()));
Toast.makeText(getApplicationContext(), "Odjęto element z: " + textViewPos_1x2.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), textViewPos_1x2.getText() + " nie może być mniejsze od 0! ", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
btn_1x2_plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (canChange) {
if (products.getProduct_1x2() < MAX_PRODUCTS) {
products.setProduct_1x2(products.getProduct_1x2() + 1);
textView_1x2.setText(Integer.toString(products.getProduct_1x2()));
Toast.makeText(getApplicationContext(), "Dodano element do: " + textViewPos_1x2.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), textViewPos_1x2.getText() + " jest pełne! ", Toast.LENGTH_SHORT).show();
}
} else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
btn_1x3_minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (canChange) {
if (products.getProduct_1x3() > 0) {
products.setProduct_1x3(products.getProduct_1x3() - 1);
textView_1x3.setText(Integer.toString(products.getProduct_1x3()));
Toast.makeText(getApplicationContext(), "Odjęto element z: " + textViewPos_1x3.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), textViewPos_1x3.getText() + " nie może być mniejsze od 0! ", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
btn_1x3_plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (canChange) {
if (products.getProduct_1x3() < MAX_PRODUCTS) {
products.setProduct_1x3(products.getProduct_1x3() + 1);
textView_1x3.setText(Integer.toString(products.getProduct_1x3()));
Toast.makeText(getApplicationContext(), "Dodano element do: " + textViewPos_1x3.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), textViewPos_1x3.getText() + " jest pełne! ", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
btn_2x1_minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (canChange) {
if (products.getProduct_2x1() > 0) {
products.setProduct_2x1(products.getProduct_2x1() - 1);
textView_2x1.setText(Integer.toString(products.getProduct_2x1()));
Toast.makeText(getApplicationContext(), "Odjęto element z: " + textViewPos_2x1.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), textViewPos_2x1.getText() + " nie może być mniejsze od 0! ", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
.
.
.
.
.
.
btn_4x3_plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (canChange) {
if (products.getProduct_4x3() < MAX_PRODUCTS) {
products.setProduct_4x3(products.getProduct_4x3() + 1);
textView_4x3.setText(Integer.toString(products.getProduct_4x3()));
Toast.makeText(getApplicationContext(), "Dodano element do: " + textViewPos_4x3.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), textViewPos_4x3.getText() + " jest pełne! ", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
}
Na takie coś wpadłem ale wyświetla zawsze ten sam Toast(tak jakby wchodzi zawsze, niezależnie co kliknę, do jednego przycisku:
//POPRAWIONE
//[][][] = [pierwsza_wspolrzedna][druga_wspolrzedna][znak]
Button[][][] buttons = new Button[4][3][2];
buttons[0][0][0] = (Button) findViewById(R.id.btn_minus_1x1);
buttons[0][0][1] = (Button) findViewById(R.id.btn_plus_1x1);
buttons[0][1][0] = (Button) findViewById(R.id.btn_minus_1x2);
buttons[0][1][1] = (Button) findViewById(R.id.btn_plus_1x2);
buttons[0][2][0] = (Button) findViewById(R.id.btn_minus_1x3);
buttons[0][2][1] = (Button) findViewById(R.id.btn_plus_1x3);
buttons[1][0][0] = (Button) findViewById(R.id.btn_minus_2x1);
buttons[1][0][1] = (Button) findViewById(R.id.btn_plus_2x1);
buttons[1][1][0] = (Button) findViewById(R.id.btn_minus_2x2);
buttons[1][1][1] = (Button) findViewById(R.id.btn_plus_2x2);
buttons[1][2][0] = (Button) findViewById(R.id.btn_minus_2x3);
buttons[1][2][1] = (Button) findViewById(R.id.btn_plus_2x3);
buttons[2][0][0] = (Button) findViewById(R.id.btn_minus_3x1);
buttons[2][0][1] = (Button) findViewById(R.id.btn_plus_3x1);
buttons[2][1][0] = (Button) findViewById(R.id.btn_minus_3x2);
buttons[2][1][1] = (Button) findViewById(R.id.btn_plus_3x2);
buttons[2][2][0] = (Button) findViewById(R.id.btn_minus_3x3);
buttons[2][2][1] = (Button) findViewById(R.id.btn_plus_3x3);
buttons[3][0][0] = (Button) findViewById(R.id.btn_minus_4x1);
buttons[3][0][1] = (Button) findViewById(R.id.btn_plus_4x1);
buttons[3][1][0] = (Button) findViewById(R.id.btn_minus_4x2);
buttons[3][1][1] = (Button) findViewById(R.id.btn_plus_4x2);
buttons[3][2][0] = (Button) findViewById(R.id.btn_minus_4x3);
buttons[3][2][1] = (Button) findViewById(R.id.btn_plus_4x3);
//POPRAWA
int i=0;
int j=0;
int k=0;
for(i=0; i<4 ; i++)
{
for(j=0; j<3; j++)
{
for(k=0 ; k<2; k++)
{
final int finalI = 0;
final int finalJ = 0;
final int finalK = 1;
buttons[i][j][k].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Odjęto element z macierzy: " + finalI +"x" + finalJ, Toast.LENGTH_SHORT).show();
if(canChange)
{
if(product[finalI][finalJ].getProduct()>0)
{
if(finalK==0)
{
product[finalI][finalJ].setProduct(product[finalI][finalJ].getProduct() -1);
textViews[finalI][finalJ].setText(Integer.toString(product[finalI][finalJ].getProduct()));
Toast.makeText(getApplicationContext(), "Odjęto element z macierzy: " +finalI+"x" + finalJ, Toast.LENGTH_SHORT).show();
}
if(finalK==1)
{
product[finalI][finalJ].setProduct(product[finalI][finalJ].getProduct() +1);
textViews[finalI][finalJ].setText(Integer.toString(product[finalI][finalJ].getProduct()));
Toast.makeText(getApplicationContext(), "Odjęto element z macierzy: " +finalI+"x" + finalJ, Toast.LENGTH_SHORT).show();
}
}
}
else
{
Toast.makeText(getApplicationContext(), "Brak możliwości edycji", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
Nie wiem również czemu i,j oraz k każe zmienic mi na finalne.