2014-11-24 81 views
0

目前我遇到了從可展開列表視圖中刪除UI元素的問題。我使用這在我的getChildView()Android,Expandable列表視圖,從單個條目中刪除子女

View button = v.findViewById(R.id.moreInfoButton1); 

if(button != null) 
{ 
    ((ViewManager)button.getParent()).removeView(button); 
} 

現在我意識到,我實際上從佈局模板,擴大其他元件的情況下,這意味着刪除元素,應用程序崩潰,因爲它不能找到按鈕。那麼是否有一種方法可以從單個條目中刪除元素。

回答

0

你可以設置一個標誌,在您的數據集,當你想刪除(隱藏)該元素,該元素的標誌設置爲true然後調用notifyDataSetChanged,並在您getView方法對兒童,膨脹你的看法時,檢查該標誌,如果它是true不要顯示該元素!

例如:

在適配器

... 
@Override 
public View getChildView(int groupposition, int childpostion, boolean isLastchild, View convertview, 
     ViewGroup parent) { 
    ... 
    if (data.get(groupposition).get(childposition).getFlag()) { 
     yourView.setVisibility(View.GONE); 
    } else { 
     yourView.setVisibility(View.VISIBLE); 
    } 
    ... 
} 

這個字段添加到您的數據:

public class ChildData { 
    ... 
    boolean flag; 
    // getter and setter 
} 

,當你想切換特定項目的知名度:

yourExpandableListData.get(parentPosition).get(childPosition).setFlag(true); 
yourExpandableListAdapter.notifyDataSetChanged(); 
+0

你可以clari更進一步,可能是一個例子或某個鏈接? – Bushes 2014-11-24 22:45:50

+0

看到我更新的答案! :) – 2014-11-24 22:58:45

+0

謝謝你。它隱藏了按鈕,但我注意到,LinearLayout仍然保持按鈕所在的空間。是否有辦法去除多餘的空間? – Bushes 2014-11-25 22:05:45