2017-06-26 12 views
0

私はJavaとAndroidが初めてです。私は座席予約システムを持っています。各座席はボタンを使って表現されています。Java/Android:ボタンをクリックして配列に値を追加/削除しますか?

私がしたいことは、ユーザーがボタンボタンを押すと色が変わる(青→黄色)、ボタンの名前を配列に渡す必要があることです。ユーザーがそのボタンを再度押すと、ボタンの色は元の状態に戻り、値はアレイから削除されます。

どうすればいいですか?

答えて

0

使用私はそれがあなたの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; 
} 
+0

私はエラーが発生します。メソッド 'equalalsIgnoreCase'を解決できません –

+0

"座席" arraistデータ型がStringであることを前提に、このコードを設計したので、 "座席" arralistデータ型がStringであることを確認してください。 –

0

あなたは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; 
     } 
    }` 
+0

どのように私は再び色を変更したり削除することができますそれは配列からですか? –

1

を使用して、各ボタンの)(の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を加えます。

以降では、必要に応じてアレイセルを計算します。

+0

Arrays.fill()はエラーです。 'シンボル' fill 'を解決できません。何故ですか? –

+0

java.util.Arraysを使用しましたか?それは動作するはずです – MHP

+0

はい。 java.util.Arraysを使用しました。 –

0

希望する(テストされていませんが、うまくいくはずです)。

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); 
      } 
     } 
関連する問題