Java / Android:通过单击按钮向/向数组添加/删除值?

时间:2017-06-26 21:03:24

标签: java android arrays arraylist

我是Java和Android的新手。我有座位预订系统。每个座位都使用一个按钮代表。

我想要做的是当用户按下按钮按钮时应更改它的颜色(蓝色 - >黄色),并且应该将按钮的名称传递给数组。如果用户再次按下该按钮,按钮的颜色应该返回到先前的状态,并且应该从数组中删除该值。

我怎么能这样做?

4 个答案:

答案 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;
}