2017-05-05 8 views
0

私のアプリケーションはデータベースから複数の記事を読み込み、それらをグリッドビューの中にある種の断片として表示します。私の問題は、このグリッドビュー内にロードされたすべてのフラグメントを表示することです。私の現在の実装では、1つのフラグメントに制限されています(常に最後のものが追加されました)。私はそれがフラグメントが追加されるべき行と列がどこにも定義されていないからだと思う。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

グリッドビューを作成した後にフラグメントを追加すると、フラグメントが追加されなければならないレイアウトがどこにも定義されていないと思うのですが、 fragmentTransaction.add(grid.getViewAtPosition(i).getId ()、フラグメント、null).commit(); 次に、個々のグリッドビューフィールドのIDを取得し、そのフィールドにフラグメントを表示することができます。

+0

私はTheoryを理解していますが、GridLayoutのgetViewAtPosition()メソッドはありません。 – TBrauwers

+0

getViewAtPositionの代わりにgetChildAt()を使うことができます。GridLayoutの親クラス、ViewGroupから継承されたメソッド –

+0

既に試していますが、うまくいきません。しかし、リニアレイアウトを使用して私は今問題を解決しています。あなたはあなたの努力に答えます – TBrauwers

関連する問題