2012-10-23 3 views
1

단추 및 TextView가 포함 된 LabelButton이라는 맞춤 LinearLayout 클래스가 있습니다. 버튼의 onclick 리스너가 LabelButton을 삭제하도록하고 싶습니다. LabelButton의 객체에서 내 Activity 클래스로 무언가를 전달하여 주 레이아웃에서 해당 LabelButton을 제거하도록 알려주려면 어떻게해야합니까? 내 활동 클래스에서자체를 삭제할 Android onClickListener

public class LabelButton extends LinearLayout { 
    private OnClickListener onClick; 
    public LabelButton(Context context, final String text) { 
     super(context); 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View labelView = inflater.inflate(R.layout.button_label, this); 
     TextView textView = (TextView) labelView.findViewById(R.id.textLabelText); 
     textView.setText(text); 
     Button button = (Button) labelView.findViewById(R.id.buttonCancelLabel); 

     onClick = new OnClickListener() { 
      public void onClick(View v) { 
      System.out.println("Button: " + text + " clicked"); 
      // do something here to remove this button 
      } 
     }; 
     button.setOnClickListener(onClick); 
    } 
    @Override 
    public void onFinishInflate() { 
     super.onFinishInflate(); 

    } 

} 

, 나는

//labelButtons is a List of LabelButtons 

LabelButton labelButton = new LabelButton(getApplicationContext(), 
      txtBagLabel.getText().toString()); 
     labelButtons.add(labelButton); 
+2

아마도 시도해 볼 수 있습니다 : labelView.setVisibility (View.GONE),하지만 확실하지 않습니다. –

+0

해결책이 있습니까? – Salmaan

답변

1

는 두 가지 방법이있다 ... 이런 목록에 LabelButtons를 추가합니다. 하나는 제거하려는 단추에서 가시성을 GONE으로 설정할 수 있습니다. 버튼 내부에서이 일을하는 경우

labelButton.setVisibility(View.GONE); 

LabelButton.this.setVisibility(View.GONE); 

두 번째 방법은 부모 뷰에 대한 참조를 얻는 것입니다 시도하고 있습니다 (즉, 그것은 자체 숨기려고) 호출

parentView.remove(child); 

여기서 child는 물론 LabelButton 객체에 대한 참조입니다.

+0

부모로부터 요소에 대한 참조를 얻으려면 어떻게해야합니까? – codingpuss

1

버튼 객체를 최종적으로 만든 다음 OnClickListener에서 해당 객체를 참조하고 해당 가시성을 변경하거나보기에서 제거 할 수 있습니다. 당신은 별칭을 할 수

0

((ViewGroup) LabelButton.this.getParent()).removeView(LabelButton.this);

0

'이'이렇게 같은 클래스 변수 :

ViewGroup self = this; 

을 그리고 당신은 다음을 수행 할 수 있습니다

onClick = new OnClickListener() { 
    public void onClick(View v) { 
     System.out.println("Button: " + text + " clicked"); 
     // do something here to remove this button 
     ViewGroup parent = (ViewGroup) getParent(); 
     parent.removeView(self); 
    } 
}; 
0

다음과 같이 수행하십시오 :

onClick = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //remove this button 
      ((LinearLayout)v.getParent()).removeView(v);    
     } 
}; 

을 누른 다음 해당 청취자 버튼을 설정하십시오.

button.setOnClickListener(onClick);