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,然后我们可以在该字段中显示片段。
我理解这个理论,但是GridLayout没有getViewAtPosition()方法? – TBrauwers
也许你可以使用getChildAt()而不是getViewAtPosition,它是从GridLayout的父类继承的方法,即ViewGroup –
已经尝试过,但不起作用。然而,我现在使用线性布局解决了我的问题。我接受你答复你的努力 – TBrauwers