2016-11-12 84 views
0

我創建了一個動態添加新按鈕的添加按鈕。我也想刪除最後創建的按鈕,當我點擊刪除按鈕。我怎樣才能做到這一點?動態添加按鈕並刪除創建的最後一個按鈕

public class Stack extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_stack); 
    final LinearLayout dynamicButtonsLinearLayout = (LinearLayout) findViewById(R.id.dynalayout); 

    final int iNumberOfButtons = 1; 
    final Button[] dynamicButtons = new Button[iNumberOfButtons]; 

    final LinearLayout.LayoutParams paramsButton = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    paramsButton.gravity= Gravity.CENTER; 
    Button addButton = (Button) findViewById(R.id.button); 
    final Button removeButton = (Button) findViewById(R.id.button2); 
    addButton.setOnClickListener(new View.OnClickListener() { 
     int num=0; //ID INCREMENT 
     public void onClick(View v) { 

      for (int i = 0; i < iNumberOfButtons; i++) { 
       dynamicButtons[i] = new Button(Stack.this); 
       dynamicButtons[i].setText(String.valueOf(num)); 
       dynamicButtons[i].setId(num); 
       dynamicButtons[i].setTextSize(15.0f); 
       dynamicButtons[i].setLayoutParams(paramsButton); 
       dynamicButtonsLinearLayout.addView(dynamicButtons[i]); 
       removeButton.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         //I WANT REMOVE THE VIEW IN THE LAST BUTTON 

        } 
       }); 
      } 
      num=num+1; 
     } 
    }); 


     ; // dynamicButtonsLinearLayout is the container of the buttons 

    } 
} 

這裏是我的XML的設計,它表明我動態創建的按鈕

enter image description here

+0

這將會是一個Java堆棧或列表對象,而不是數組 –

+0

容易得多,你想'的,對於外循環removeButton.setOnClickListener' ... –

+0

@ cricket_007 Java堆棧作爲像疊和推?你能給我舉個例子嗎?這將是一個很大的幫助。謝謝youuu – Aira

回答

0

以下是我在我的代碼更改,以便它可以增加(就像推)和刪除(POP)。堆棧可視化我猜。

 public void onClick(View v) { 
      if (dynamicButtonsLinearLayout.getChildCount()==0) 
      { 
       removeButton.setEnabled(true); 
      } 
      for (int i = 0; i < iNumberOfButtons; i++) { 
       dynamicButtonsLinearLayout.getChildCount(); 
       dynamicButtons = new Button(Stack.this); 
       dynamicButtons.setText(String.valueOf(dynamicButtonsLinearLayout.getChildCount())); 
       dynamicButtons.setId(num); 
       dynamicButtons.setTextSize(15.0f); 
       dynamicButtons.setBackgroundColor(getRandomColor()); 
       dynamicButtons.setLayoutParams(paramsButton); 
       dynamicButtonsLinearLayout.addView(dynamicButtons); 
      } 

      num=num+1; 
     } 
    }); 
     removeButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

      dynamicButtonsLinearLayout.removeViewAt(dynamicButtonsLinearLayout.getChildCount() - 1); 
       if (dynamicButtonsLinearLayout.getChildCount()==0) 
       { 
        removeButton.setEnabled(false); 
       } 
       else 
       { 
        removeButton.setEnabled(true); 
       } 

     } 
    });