我是Java和Android的新手。我有座位预订系统。每个座位都使用一个按钮代表。
我想要做的是当用户按下按钮按钮时应更改它的颜色(蓝色 - >黄色),并且应该将按钮的名称传递给数组。如果用户再次按下该按钮,按钮的颜色应该返回到先前的状态,并且应该从数组中删除该值。
我怎么能这样做?
答案 0 :(得分:1)
这是您可以使用的一种解决方案:
你需要和数组如下:
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];
}
});
<强>更新强>
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
,如上所述。
以后根据您的需要计算阵列单元格。
答案 1 :(得分:0)
您可以使用switch语句
为每个按钮编写onClick()`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;
}
}`
答案 2 :(得分: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);
}
}
答案 3 :(得分:0)
使用此代码我希望它能为您提供帮助:
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;
}