2014-01-30 102 views
2
public void Add_text() { 


     ll.setOrientation(LinearLayout.HORIZONTAL); 
     ll.setId(i); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

     TextView product = new TextView(getActivity()); 
     product.setText(" Product" + 5 + " "); 
     ll.addView(product); 

     EditText qty = new EditText(getActivity()); 
     qty.setText(i + ""); 
     qty.setId(i); 
     qty.setWidth(120); 

     ll.addView(qty); 

     Button btn = new Button(getActivity()); 
     ll.addView(btn); 
     btn.setLayoutParams(params); 
     btn.setOnClickListener(o); 

     ly.addView(ll); 
     i++; 

    } 

我寫了上面的代碼來動態創建文本字段和按鈕;但現在我需要刪除2個文本框和一個按鈕,當點擊按鈕時。我怎麼做?如何刪除按鈕點擊動態創建的視圖

+0

嘗試使用view.gone –

+0

嘗試ll.removeView(查看) – deniz

+1

您以編程方式創建'll'佈局 – kId

回答

3

請嘗試下面的代碼。

button.setOnClickListener(new View.OnClickListener() {  
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     LinearLayout linearParent = (LinearLayout) v.getParent().getParent(); 
     LinearLayout linearChild = (LinearLayout) v.getParent(); 
     linearParent.removeView(linearChild); 
    } 
}); 

說明

  • 這裏先採取任何視圖的 「祖父母」。
  • 然後取其「父」視圖
  • 參照「GrandParent」刪除該「父」視圖。
  • 這將刪除「父母」擁有的所有視圖。根據你的代碼,你的「ll」將會是「linearChild」。並且「ly」在這裏將是「linearParent」。因此,整個「ll」將從您已動態添加的「ly」中刪除。如果你想再次這一觀點,那麼你可以在同樣的方式調用addViewAt()
0

如果您想永久刪除您創建的視圖。

OnClick(View view){ 
    ly.removeAllViews() 
    } 

如果您不想永久刪除您創建的視圖。

OnClick(View view){ 
    ly.setVisibility(View.GONE); //This will hide the all views 
    qty.setVisibility(View.GONE);//This will hide the EditText qty 
    product .setVisibility(View.GONE);//This will hide the TextView product 
} 

所以使用你想要的適當的代碼行。

編輯:

使用此代碼,您的具體情況:

public void Add_text() { 


    ll.setOrientation(LinearLayout.HORIZONTAL); 
    ll.setId(i); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

    TextView product = new TextView(getActivity()); 
    product.setText(" Product" + 5 + " "); 
    ll.addView(product); 

    EditText qty = new EditText(getActivity()); 
    qty.setText(i + ""); 
    qty.setId(i); 
    qty.setWidth(120); 

    ll.addView(qty); 

    Button btn = new Button(this); 
    ll.addView(btn); 
    btn.setLayoutParams(params); 


    ly.addView(ll); 
    i++; 

    btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View button) { 
      qty.setVisibility(View.GONE);//This will hide the EditText qty 
      product .setVisibility(View.GONE);//This will hide the TextView product 

     } 
    }); 

} 
+0

Actully我不想刪除所有items.Ineed刪除與按鈕assisociated文本框。 – user2771059

+0

@kaluwila老兄我只是想知道有什麼區別B/W View.GONE和View.INVISIBLE。你能告訴我嗎? – SMR

+0

@SMR:檢查http://stackoverflow.com/questions/11556607/android-difference-between-invisible-and-gone和你會明白有什麼區別 – kId

0

我覺得你有使用這種方法對你的LinearLayout:

public void removeView (View view)

首先你打電話:

EditText et = (EditText)linearLayout.findViewById(yourEditText.getId()); 

然後調用remove視圖方法:

linearLayout.removeView (et) ; 

,併除去所有的意見是在LinearLayout中執行以下操作:

public void removeAllViews()

類似如下:

linearLayout.removeAllViews() 

並給我一些反饋

希望有所幫助。

0

你可以簡單地使用qty.setVisibility(View.GONE)對你所選擇的按鈕的onClickListener()。喜歡這個。

btn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     qty.setVisibility(View.GONE); //for temporary purpose 

     //or u can also do this 
     layout.removeView(qty); //removes permanently 
    } 
}); 

使用View.GONE的好處是,你可以查看回來,如果你想,但layout.removeView(qty)將永久刪除該視圖,你必須再重新添加視圖。

,因爲原因[編輯] 1.變更爲View.GONE,而不是View.INVISIBLE解釋here


希望我回答你的問題。 :)

+0

Actully我不想刪除所有items.Ineed刪除與按鈕assisociated文本框。 – user2771059

+0

是的,這正是我的代碼正在做的。乾杯! – SMR

0

只使用您想要從線性佈局

Linearlayout.removeViewAt(); 

刪除您的視圖索引。

我希望它能幫助你。

相關問題