2017-04-26 12 views
0

RecyclerViewのリストの最後の項目の後に仕切りを追加するにはどうすればよいですか?RecyclerView.ItemDecoration最後の項目の後のデバイダ

+0

をあなたの行項目は、一番下の行が追加されている必要があります。 puttinを試してください。項目のxmlファイルの一番下にViewを表示 – tompadre

+0

私は今のところこの方法を使用しています。しかし、どのようにItemDecorationでこれを達成するには? –

答えて

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を追加し、下にリサイクラーと仕切りを含むレイアウト内に配置する必要があります。しかし、あなたがビューを膨らませるので、このように良いです。 –