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

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

by teamnova 2022. 8. 2.

안녕하세요.

오늘은 지난 포스팅에 이어 동적으로 생성한 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 동적으로 생성, 드래그 앤 드롭, 삭제까지 구현을 해보았습니다.

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

감사합니다.