2014-01-30 39 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(); 

删除您的视图索引。

我希望它能帮助你。