2014-03-05 19 views
0

當我從可擴展列表視圖中的羣組中刪除子項時發生問題。問題是當我的組展開時,我刪除了當我在我的ListView適配器上執行「notifyDataSetChanged」時調用了「getChildView」子組。我正在訪問一個大小現在爲零的數組,並得到一個Out Of Bounds異常。我會假設Expandable ListView會自動刪除視圖,因爲「getChildrenCount」返回0.如果該組被摺疊,則不會看到此問題。該列表從不顯示子視圖,因爲沒有更多的子項。Expanpandable ListView在刪除羣組中的最後一個子項時崩潰

我的問題是你如何刪除一個擴展羣中的最後一個孩子在一個可擴展的ListView

這裏是我的代碼的例子。瞭解條件是組已擴展,並且我已刪除所有子項,並且此函數仍在調用中。

// This Function used to inflate child rows view 
    @Override 
    public View getChildView(
     int groupPosition, 
     int childPosition, 
     boolean isLastChild, 
     View convertView, 
     ViewGroup parentView) 
    { 
     Trade t = objArray[groupPosition]; 

     View childView = convertView; 
     if(childView == null) 
     { 
      LayoutInflater inflater = LayoutInflater.from(client); 
      childView = inflater.inflate(R.layout.item_textview, parentView, false); 
      ChildViewHolder childViewHolder = new ChildViewHolder(); 

      childViewHolder.itemTextView = (TextView)childView.findViewById(R.id.itemTextView); 
      childView.setTag(childViewHolder); 
     } 

     ChildViewHolder childViewHolder = (ChildViewHolder)childView.getTag(); 

     childViewHolder.itemTextView.setText("Term: " + t.getTradeTerms().get(childPosition)); 
     return childView; 
    } 

    @Override 
    public int getChildrenCount(int groupPosition) 
    { 
     return objArray[groupPosition].getTradeTerms().size(); 
    } 

回答

0

請看下面的代碼,我希望這是非常有幫助的完整。

HashMap<String, List<String>> listDataChild; 
List<String> listDataHeader; 

// Listview on child click listener 
    expListView.setOnChildClickListener(new OnChildClickListener() { 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
      // TODO Auto-generated method stub 

      listDataChild.get(listDataHeader.get(groupPosition)).remove(childPosition); 
      adapter.notifyDataSetChanged(); 

      return false; 
     } 
    }); 
+0

不,這不會幫助。我通過傳遞給適配器的列表從另一個窗口中刪除數據。我調用了導致Exp的adapter.notifyDataSetChanged()。列表視圖重新配置。試試這個實驗。刪除展開的組中的一個孩子。你的getChildView將會接到電話。當孩子數據已經被刪除時,你如何處理這個事件。 – user3383795

+1

如果您從其他活動中刪除數據,請使用公用數組列表,並在使用adatpter.notifyDataSetChaged()後進行操作。 –

相關問題