ฉันจะลบมุมมองเด็กทั้งหมดออกจากวิดเจ็ตได้อย่างไร ตัวอย่างเช่นฉันมี GridView และฉันขยาย LinearLayouts อื่น ๆ แบบไดนามิกเข้าไปในนั้น ต่อมาในแอปพลิเคชันของฉันฉันต้องการเริ่มต้นใหม่ด้วย GridView นั้นและล้างมุมมองย่อยทั้งหมด ฉันจะทำอย่างไร TIA.
ฉันจะลบมุมมองเด็กทั้งหมดออกจากวิดเจ็ตได้อย่างไร ตัวอย่างเช่นฉันมี GridView และฉันขยาย LinearLayouts อื่น ๆ แบบไดนามิกเข้าไปในนั้น ต่อมาในแอปพลิเคชันของฉันฉันต้องการเริ่มต้นใหม่ด้วย GridView นั้นและล้างมุมมองย่อยทั้งหมด ฉันจะทำอย่างไร TIA.
คำตอบ:
viewGroup.removeAllViews()
ใช้ได้กับทุก viewGroup ในกรณีของคุณคือ GridView
http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews ()
ViewGroup?
คุณสามารถลบมุมมองบางประเภทใน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);
}
}
}