본문 바로가기
안드로이드 자바

[JAVA][Android] 동적으로 생성한 View를 삭제하기

by teamnova 2022. 8. 2.
728x90

안녕하세요.

오늘은 지난 포스팅에 이어 동적으로 생성한 View를 역순으로 삭제하는 방법에 대해 알아보겠습니다.

 

https://stickode.tistory.com/500

(해당 포스트와 이어지는 내용입니다. )

 

역순으로 삭제한다는 의미는 View가 생성될 때 1,2,3 이렇게 생성이 되었다면 

삭제될 때는 3,2,1 이렇게 삭제된다는 뜻입니다.

 

먼저 생성한 View를 삭제하기 위해 View를 생성할 때 각각 View에 id를 할당해 주어야 합니다.

//MainActivity.java

public class MainActivity extends Activity implements View.OnTouchListener {
    
    private final int DYNAMIC_VIEW_ID = 0x8000; // View id를 할당 할 때 View 의 순서와 합쳐져 ID를 선언함.

 

 

private void pushButton() {
    .
    .
    .
    dynamicButton.setId(DYNAMIC_VIEW_ID + numButton); // 해당 View 의 ID를 선언함.
    .
    .
    .
}

보시는 것과 같이 int형으로 id 변수를 선언하고,

View를 추가하는 시점에서 View의 순서와 합쳐져 view의 ID가 선언되는 것을 확인할 수 있습니다.

 

이제 View를 삭제해보겠습니다.

 

View삭제 메소드를 선언합니다.

 

private void removeButton(){ // View를 삭제하는 메서드

    if( numButton <= 0){ // 만약 View가 0개 이하일 때
        return;
    }

    Button dynamicButton = findViewById(DYNAMIC_VIEW_ID + numButton); // 생성했던 View의 ID 가져오기
    dynamicLayout.removeView(dynamicButton); // 해당 View를 삭제함
    numButton--; // View 삭제 시 View 개수 1씩 감소
}

보시는 것과 같이 View의 개수가 0이하면 return을 해주고,

그게 아니라면 View를 삭제하는 코드가 실행되는 메소드를 선언했습니다.

이제 해당 코드를 실행해 보도록 하겠습니다.

 

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

보시는 것과 같이 View를 생성, 이동하고 삭제되는 것까지 확인할 수 있습니다.

만약에 특정 View를 선택해서 삭제하고 싶다면 View를 삭제하는 부분의 코드를 활용해서 사용하시면 됩니다.

 

 

 

여기까지 View 동적으로 생성, 드래그 앤 드롭, 삭제까지 구현을 해보았습니다.

궁금하신 점 있으시면 언제든지 댓글 남겨주세요.

감사합니다.