위젯에서 모든 하위보기를 제거하려면 어떻게해야합니까? 예를 들어, GridView가 있고 다른 많은 LinearLayouts를 동적으로 팽창시킵니다. 나중에 내 응용 프로그램에서 해당 GridView로 새로 시작하고 모든 자식 뷰를 지우려고합니다. 어떻게해야합니까? TIA.
답변
viewGroup.removeAllViews()
모든 viewGroup에서 작동합니다. 귀하의 경우에는 GridView입니다.
http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews ()
답변
다음 함수 를 사용하여 ViewGroup 에서 일부 유형의보기 만 제거 할 수 있습니다 .
private void clearImageView(ViewGroup v) {
boolean doBreak = false;
while (!doBreak) {
int childCount = v.getChildCount();
int i;
for(i=0; i<childCount; i++) {
View currentChild = v.getChildAt(i);
// Change ImageView with your desired type view
if (currentChild instanceof ImageView) {
v.removeView(currentChild);
break;
}
}
if (i == childCount) {
doBreak = true;
}
}
}
답변
이 시도
RelativeLayout relativeLayout = findViewById(R.id.realtive_layout_root);
relativeLayout.removeAllViews();
이 코드는 저에게 효과적입니다.
답변
이 시도
void removeAllChildViews(ViewGroup viewGroup) {
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
if (child instanceof ViewGroup) {
if (child instanceof AdapterView) {
viewGroup.removeView(child);
return;
}
removeAllChildViews(((ViewGroup) child));
} else {
viewGroup.removeView(child);
}
}
}