2017-05-05 47 views
0

我的應用程序從數據庫加載多篇文章,並將它們顯示爲網格視圖內的某種片段。我的問題是顯示在這個網格視圖中加載的每個片段。與我目前的實施,它只限於一個片段(總是最後一個添加)。我認爲它是因爲應該添加片段的行和列沒有定義。Android將多個片段添加到網格佈局

有沒有在這種情況下定義行和列的方法,或者最好自動填充網格?我一段時間以來一直困在這裏,還找不到解決方案。

法片段裝載到格:

private void loadFragmentsFromArticleList(List<DatabaseArticle> articles){ 
 
     FragmentTransaction fragmentTransaction; 
 
     grid.removeAllViews(); 
 
     for(DatabaseArticle a : articles){ 
 
      fragmentTransaction = fragmentManager.beginTransaction(); 
 
      CategoryButtonFragment fragment = CategoryButtonFragment.newInstance(a.getName(),""); 
 
      fragmentTransaction.add(R.id.gridButtons,fragment,null).commit(); 
 
     } 
 

 

 
    }

網格XML

<GridLayout 
 
       android:id="@+id/gridButtons" 
 
       android:layout_width="match_parent" 
 
       android:layout_height="wrap_content" 
 
       android:layout_above="@+id/btnDB" 
 
       android:layout_alignParentEnd="true" 
 
       android:layout_alignParentRight="true" 
 
       android:layout_below="@+id/btnSearch" 
 
       android:columnCount="3" 
 
       android:orientation="horizontal" 
 
       android:animateLayoutChanges="true" 
 
       > 
 

 
      </GridLayout>

回答

0

我認爲你是正確的,片段必須添加的佈局無處被定義,如果你創建gridview後添加片段,那麼你可以使用片段事務,如 fragmentTransaction.add(grid.getViewAtPosition(i).getId (),片段,NULL).commit(); 然後我們將有每個單獨的網格視圖字段的ID,然後我們可以在該字段中顯示片段。

+0

我理解這個理論,但是GridLayout沒有getViewAtPosition()方法? – TBrauwers

+0

也許你可以使用getChildAt()而不是getViewAtPosition,它是從GridLayout的父類繼承的方法,即ViewGroup –

+0

已經嘗試過,但不起作用。然而,我現在使用線性佈局解決了我的問題。我接受你答覆你的努力 – TBrauwers