2017-03-02 8 views
0

當我從材質對話框的UI中刪除第一個按鈕時。但是,它從UI中刪除了最後一個按鈕。我想要從UI中刪除多個按鈕。在按鈕的每次單擊事件之後。如何刪除材質對話框中的多個按鈕窗體視圖在android中?

layout2 = (LinearLayout) dialog.getCustomView().findViewById(R.id.layoutDisplayTags); 
layout2.setOrientation(LinearLayout.VERTICAL); 
layout2.setWeightSum(1); 
layout2.removeAllViews(); 
layout2.invalidate(); 


float rowneed = ((float) count2/5); 
k = 0; 
for (int i = 0; i < ceil(rowneed); i++) { 
row2 = new LinearLayout(getContext()); 
row2.setLayoutParams(new LinearLayout.LayoutParam(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
row2.removeAllViews(); 
row2.invalidate(); 
for (int j = 0; j < 5; j++) 
{ 
    btnTag2 = new Button(getContext()); 
    btnTag2.setHeight(15); 
    btnTag2.setWidth(0); 
    btnTag2.setMinimumWidth(155); 
    btnTag2.setMinimumHeight(135); 

     if (k < count2) 
     { 
      if (AllExpenseTagArray.size() != 0) 
       { 
        btnTag2.setText(AllExpenseTagArray.get(k).getTagName()); 
        btnTag2.setId(k); 
        btnTag2.setGravity(View.TEXT_ALIGNMENT_CENTER); 
        Drawable image = ContextCompat.getDrawable(getContext(), R.drawable.ic_close_black_18dp); 
        image.setBounds(1, 3, 25, 25); 
        btnTag2.setCompoundDrawables(null, null, image, null); 
        k++; 
        btnTag2.setVisibility(View.VISIBLE); 
       } 
      else { 
        btnTag2.setVisibility(View.INVISIBLE); 
        } 
       } 
     else { 
       btnTag2.setVisibility(View.INVISIBLE); 
       } 
       btnTag2.setTextSize(7); 
       row2.addView(btnTag2); 
      } 

       layout2.addView(row2); 
       layout2.invalidate(); 

} 

此代碼是不是在你的onClick監聽工作

for (int id = 0; id < AllExpenseTagArray.size(); id++) 
    { 
    btnTag2 = (Button) dialog.getCustomView().findViewById(id); 
    final int finalId = id; 
    final int finalId1 = id; 
    btnTag2.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View view) 
       { 
        btnTag2.setVisibility(View.GONE); 
        deleteId = AllExpenseTagArray.get(finalId1).getTagId(); 
       }                                   
     }); 

回答

0

btnTag2指的是全局變量這是所有正在創建的偵聽器相同,只是所創建的最後Button - 這就是爲什麼你看到你所看到的。 onClick聽衆的view參數是Button,因此您可以進行以下更改以使按鈕在您單擊時消失。

 for (int id = 0; id < AllExpenseTagArray.size(); id++) { 
     btnTag2 = (Button) dialog.getCustomView().findViewById(id); 
     final int finalId = id; 
     final int finalId1 = id; 
     btnTag2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       view.setVisibility(View.GONE); // Make this change 
       deleteId = AllExpenseTagArray.get(finalId1).getTagId(); 
      } 
     }); 
    } 
+0

非常感謝@Cheticamp –

0

btnTag2是循環的推移,所以當你點擊你有最後的值被更新的全局變量。

相關問題