2016-09-16 85 views
1

我試着用以下方法如何獲取表的索引值?

if(tbl.getParent() instanceof Body) 
{ 
    Body body = (Body) tbl.getParent(); 
    int tIndex = body.getContent().indexOf(tbl); 
    body.getContent().remove(tbl); 
} 

得到一個表的索引值,而另一種方法是使用contentAccessor

if(tbl.getParent() instanceof ContentAccessor) 
{ 
    ContentAccessor ca = (ContentAccessor) tbl.getParent(); 
    int tIndex = ca.getContent().indexOf(tbl); 
    ca.getContent().remove(tbl); 
} 

而不是讓實際的索引值我越來越但是-1作爲tIndex。它也不會從它的父項中刪除tbl(ca.getContent()。remove(tbl);)。

是否有任何其他方式來獲得Tbl的索引值?

回答

1
ContentAccessor ca = (ContentAccessor) tbl.getParent(); 
    int tIndex = getIndex(ca.getContent(), tbl); 
    if(tIndex != 98761){ 
    //do whatever you want to 
    } 

    private static int getIndex(List<Object> theList, Object bm) 
    { 
     for (Object ox : theList) 
     { 
     if (XmlUtils.unwrap(ox).equals(bm)) 
     { 
      int o = theList.indexOf(ox); 
      return o; 

     } 
     } 
    return 98761; 

    } 

在我的情況下,tIndex不會觸及那麼多的數字(98761)。如果您覺得不安全,只需增加返回值。