RecyclerViewのリストの最後の項目の後に仕切りを追加するにはどうすればよいですか?RecyclerView.ItemDecoration最後の項目の後のデバイダ
0
A
答えて
2
RecyclerViewアダプタ内のitemListに要素(モデルの空のインスタンス)を追加できます。次に、アダプタ内のgetItemViewType
を上書きします。
@Override
public int getItemViewType(int position) {
int viewType;
Model item = getItem(position);
if (item.getId == -1) {
viewType = R.layout.item_divider;
} else {
viewType = R.layout.item_model;
}
return viewType;
}
次に、onCreateViewHolder
メソッドで。あなたのViewHolderの最後に
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(viewType, parent, false);
return new MyViewHolder(v, viewType);
}
ビュータイプに応じたビューを膨らま:
MyViewHolder(View itemView, int viewType) {
super(itemView);
if (viewType == R.layout.item_model) {
//inflate model view
} else if (viewType == R.layout.item_divider) {
//inflate divider view
}
}
と同じあなたはデータをバインドするとき:
void bind(Model model) {
if (model.getId != -1) {
//bind your model data
} else {
//bind if you need divider data.
}
}
+0
これはこの問題の回避策です。たぶん標準的な方法がありますか? しかし、それは動作します。ありがとう! –
+0
これはリサイクラーで仕切りスクロールを行う簡単な方法です。そうでない場合は、ScrollViewを追加し、下にリサイクラーと仕切りを含むレイアウト内に配置する必要があります。しかし、あなたがビューを膨らませるので、このように良いです。 –
をあなたの行項目は、一番下の行が追加されている必要があります。 puttinを試してください。項目のxmlファイルの一番下にViewを表示 – tompadre
私は今のところこの方法を使用しています。しかし、どのようにItemDecorationでこれを達成するには? –