VerticalGridFragment を使用して、コンテンツの単一のリストを作成しています。アダプターに ArrayObjectAdapter を使用しています。私が気付いたのは、最後の行のデータが正しく配置されていないことです。例:
1) 上記の添付画像をご覧ください。
2) リストが 5 列で構成されていて、最後の行に表示するコンテンツが 4 つしかない場合、Leanback は 2 番目、3 番目、4 番目、5 番目のスロットにコンテンツを表示し、最初のスロットは空になります。
3) その他のケースでは、最後の 5 つのコンテンツが 1、2、3、4 スロットに表示され、最後のコンテンツが 5 番目のスロットに表示される代わりに、最後のコンテンツが完全に新しい行の中央 (3 番目のスロット) に配置されました。
最後の行に関しては、さらに多くの一貫性のないデータ バインディングがあります。
リーンバック ライブラリでこの種の動作に気づいた人はいますか? または、これを修正するための解決策はありますか?
これが私のコードの抜粋です:
private volatile ArrayObjectAdapter listAdapter;
private void setupUX() {
setSearchAffordanceColor(getResources().getColor(R.color.search_bg_color));
VerticalGridPresenter verticalGridPresenter = new VerticalGridPresenter();
verticalGridPresenter.setNumberOfColumns(NUM_COL);
setGridPresenter(verticalGridPresenter);
CardView cardView = new CardView();
queriesFired = new HashMap<>();
dataHandler = new Handler(getActivity().getMainLooper());
listAdapter = new ArrayObjectAdapter(cardView);
setAdapter(listAdapter);
new Handler().postDelayed(() -> startEntranceTransition(), 500);
}
private void populateData() {
....
listAdapter.add(uiContent);
....
}