私のアプリケーションはデータベースから複数の記事を読み込み、それらをグリッドビューの中にある種の断片として表示します。私の問題は、このグリッドビュー内にロードされたすべてのフラグメントを表示することです。私の現在の実装では、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>
私はTheoryを理解していますが、GridLayoutのgetViewAtPosition()メソッドはありません。 – TBrauwers
getViewAtPositionの代わりにgetChildAt()を使うことができます。GridLayoutの親クラス、ViewGroupから継承されたメソッド –
既に試していますが、うまくいきません。しかし、リニアレイアウトを使用して私は今問題を解決しています。あなたはあなたの努力に答えます – TBrauwers