Android将多个片段添加到网格布局

问题描述:

我的应用程序从数据库加载多篇文章,并将它们显示为网格视图内的某种片段。我的问题是显示在这个网格视图中加载的每个片段。与我目前的实施,它只限于一个片段(总是最后一个添加)。我认为它是因为应该添加片段的行和列没有定义。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>

我认为你是正确的,片段必须添加的布局无处被定义,如果你创建gridview后添加片段,那么你可以使用片段事务,如 fragmentTransaction.add(grid.getViewAtPosition(i).getId (),片段,NULL).commit(); 然后我们将有每个单独的网格视图字段的ID,然后我们可以在该字段中显示片段。

+0

我理解这个理论,但是GridLayout没有getViewAtPosition()方法? – TBrauwers

+0

也许你可以使用getChildAt()而不是getViewAtPosition,它是从GridLayout的父类继承的方法,即ViewGroup –

+0

已经尝试过,但不起作用。然而,我现在使用线性布局解决了我的问题。我接受你答复你的努力 – TBrauwers