RecyclerView
を実装しましたが、最初の3つの要素の後にカスタムビュー/行を追加したいので、私は立ち往生しています(GirdLayoutManager
) (青い部分)以下 参照イメージ:GridLayoutManagerを使用したRecyclerViewのカスタムビュー/ロー
どのように私はそれを達成することができますか?何か案は?ありがとう!
RecyclerView
を実装しましたが、最初の3つの要素の後にカスタムビュー/行を追加したいので、私は立ち往生しています(GirdLayoutManager
) (青い部分)以下 参照イメージ:GridLayoutManagerを使用したRecyclerViewのカスタムビュー/ロー
どのように私はそれを達成することができますか?何か案は?ありがとう!
以下のようなあなたのグリッドレイアウトマネージャを設定します。その後、
final GridLayoutManager mng_layout = new GridLayoutManager(this.getActivity(), 2);
mng_layout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(recyclerAdapter.getItemViewType(position)) {
case MyRecyclerAdapter.TYPE_SINGLE:
return 1;
case MyRecyclerAdapter.TYPE_DEFAULT:
return 2;
default:
return -1;
}
}
});
myRecyclerView.setLayoutManager(mng_layout);
そして、あなたのRecyclerViewAdapterは、以下のように更新します。
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = null;
if (viewType==TYPE_DEFAULT) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_grid_view_item, parent, false);
return new DefaultViewHolder(view);
} else if (viewType==TYPE_SINGLE){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_grid_view_header, parent, false);
return new SingleItemViewHolder(view);
}
throw new RuntimeException("There is no type that matches the type " + viewType + " + make sure your using types correctly");
}
@Override
public int getItemViewType(int position) {
return (list.get(position).getType()==TYPE_DEFAULT) ? TYPE_DEFAULT : TYPE_SINGLE;
}
チェックこのhttps://guides.codepath.com/android/Heterogenous-Layouts -inside-RecyclerView –