私はJavaとAndroidが初めてです。私は座席予約システムを持っています。各座席はボタンを使って表現されています。Java/Android:ボタンをクリックして配列に値を追加/削除しますか?
私がしたいことは、ユーザーがボタンボタンを押すと色が変わる(青→黄色)、ボタンの名前を配列に渡す必要があることです。ユーザーがそのボタンを再度押すと、ボタンの色は元の状態に戻り、値はアレイから削除されます。
どうすればいいですか?
私はJavaとAndroidが初めてです。私は座席予約システムを持っています。各座席はボタンを使って表現されています。Java/Android:ボタンをクリックして配列に値を追加/削除しますか?
私がしたいことは、ユーザーがボタンボタンを押すと色が変わる(青→黄色)、ボタンの名前を配列に渡す必要があることです。ユーザーがそのボタンを再度押すと、ボタンの色は元の状態に戻り、値はアレイから削除されます。
どうすればいいですか?
使用私はそれがあなたのfrの仕事を願っています。このコード:
public void onClick(View view) {
switch (view.getId()) {
case R.id.seat_1:
{
if (doesExist("1")){
view.setBackgroundColor(Color.BLACK);
} else {
view.setBackgroundColor(Color.YELLOW);
seats.add("1");
}
break;
}
case R.id.seat_2: {
if (doesExist("2")){
view.setBackgroundColor(Color.BLACK);
} else {
view.setBackgroundColor(Color.RED);
seats.add("2");
}
break;
}
case R.id.seat_3: {
if (doesExist("3")){
view.setBackgroundColor(Color.BLACK);
} else {
view.setBackgroundColor(Color.BLUE);
seats.add("3");
}
break;
}
}
}
をし、またどこかで、あなたのクラスでこのメソッドを置く:
public boolean doesExist(String buttonValue) {
for (int a = 0 ; a < seats.size() ; a++){
if (buttonValue.equalsIgnoreCase(seats.get(a))){
seats.remove(seats.get(a));
return true;
}
}
return false;
}
あなたはswitch文
`public void onClick(View view) {
switch (view.getId())
{
case R.id.seat_1: {
view.setBackgroundColor(Color.CYAN);
seats.add("1");
break;
}
case R.id.seat_2: {
view.setBackgroundColor(Color.CYAN);
seats.add("2");
break;
}
case R.id.seat_3: {
view.setBackgroundColor(Color.CYAN);
seats.add("3");
break;
}
}`
どのように私は再び色を変更したり削除することができますそれは配列からですか? –
を使用して、各ボタンの)(のonClickを書くことができ、これはあなたが使用することができます一つの解決策である:あなたが必要
、以下のような配列:
Boolean[] array = new Boolean[size];
Arrays.fill(array, Boolean.FALSE);
後で各ボタン(各座席)のonClick
には、このように位置が真/偽になります。
seat3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
array[3] = !array[3];
}
});
UPDATE
seat0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
array[0] = !array[0];
if(array[3]){
seat0.setBackgroundColor(Color.BLUE);//selected seat
}else{
seat0.setBackgroundColor(Color.YELLOW);//unselected seat
}
}
});
seat1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
array[1] = !array[1];
if(array[1]){
seat1.setBackgroundColor(Color.BLUE);//selected seat
}else{
seat1.setBackgroundColor(Color.YELLOW);//unselected seat
}
}
});
seat2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
array[2] = !array[2];
if(array[2]){
seat2.setBackgroundColor(Color.BLUE);//selected seat
}else{
seat2.setBackgroundColor(Color.YELLOW);//unselected seat
}
}
});
は、上記のような各席用onClick
を加えます。
以降では、必要に応じてアレイセルを計算します。
Arrays.fill()はエラーです。 'シンボル' fill 'を解決できません。何故ですか? –
java.util.Arraysを使用しましたか?それは動作するはずです – MHP
はい。 java.util.Arraysを使用しました。 –
希望する(テストされていませんが、うまくいくはずです)。
SparseBooleanArray mSeatsArray = new SparseBooleanArray();
public void onClick(View view) {
switch (view.getId()) {
case R.id.seat_1: {
toggleReservation(view, 1);
break;
}
case R.id.seat_2: {
toggleReservation(view, 2);
break;
}
case R.id.seat_3: {
toggleReservation(view, 3);
break;
}
}
}
private void toggleReservation(View view, int i) {
boolean isReserved = mSeatsArray.get(i, false);
if (!isReserved) {
view.setBackgroundColor(Color.YELLOW);
mSeatsArray.put(i, true);
} else {
view.setBackgroundColor(Color.CYAN);
mSeatsArray.put(i, false);
}
}
private void getReservedNumbers() {
for (int i = 0; i < mSeatsArray.size(); i++) {
boolean isReserved = mSeatsArray.valueAt(i);
if (isReserved) {
int seatNumber = mSeatsArray.keyAt(i); // do smth with reserved seats()
Log.e("MainActivity", "getReservedIndexes: " + seatNumber);
}
}
私はエラーが発生します。メソッド 'equalalsIgnoreCase'を解決できません –
"座席" arraistデータ型がStringであることを前提に、このコードを設計したので、 "座席" arralistデータ型がStringであることを確認してください。 –