RecyclerView.Adapterは、すぐに複数のビュータイプをサポートします。特定の位置に表示する項目の種類はあなた次第です。
@Override
public int getItemViewType(int position) {
if (isHeader(position)) {
return TYPE_HEADER;
} else {
return TYPE_ITEM;
}
}
はその後、あなたはそれを利用するために、適切なレイアウトを膨らませるonCreateViewHolder
を使用してonBindViewHolder
することができます:あなたはTYPE_HEADERとTYPE_ITEM 2つの項目の種類を定義する場合は、簡単に、たとえば、セクションを作成するためにそれを使用することができます。
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_HEADER) {
View v = ... ; // inflate here
return new HeaderViewHolder(v);
} else {
View v = ... ; // inflate here
return new ItemViewHolder(v);
}
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (holder instanceof HeaderViewHolder) {
// handle header
} else if (holder instanceof ItemViewHolder {
// handle item
}
}
任意のデータ構造を使用できます。私は自分の実装の木のような構造を使うか、単純なArrayListとinstanceofを使ってitemがヘッダかコンテンツかを検出する方が好きです。
(HTTP [ 'RecyclerView'増やす使用可能なライブラリ]の多く:// android-arsenal.com/tag/199)は、ヘッダー/セクションまたはツリースタイルの「展開可能な」システムを提供します。 – CommonsWare
おそらく[これ](http://stacktips.com/tutorials/android/listview-with-section-header-in-android)があなたが探しているものです。 ** cons **:あなた自身でヘッダーのタイトルを管理する必要があります。 **プロ**:ソリューションには追加のライブラリは必要ありません。 – j2ko