Skip to content

Instantly share code, notes, and snippets.

@paramsen
Created May 16, 2017 21:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paramsen/d6b2b0d158bb801f1301139c7c76c105 to your computer and use it in GitHub Desktop.
Save paramsen/d6b2b0d158bb801f1301139c7c76c105 to your computer and use it in GitHub Desktop.
StickyHeaderAdapter impl for Mike
package com.paramsen.testground;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import ca.barrenechea.widget.recyclerview.decoration.StickyHeaderAdapter;
import ca.barrenechea.widget.recyclerview.decoration.StickyHeaderDecoration;
public class StickyHeaderActivity extends AppCompatActivity {
@BindView(R.id.recycler)
RecyclerView recycler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sticky_header);
ButterKnife.bind(this);
TestStickyAdapter adapter = new TestStickyAdapter(this, generateItems());
recycler.setLayoutManager(new LinearLayoutManager(this));
recycler.addItemDecoration(new StickyHeaderDecoration(adapter));
recycler.setAdapter(adapter);
}
private List<Item> generateItems() {
List<Item> items = new ArrayList<>();
for (int i = 1; i <= 50; i++) {
items.add(new Item(i, i / 10 + 1));
}
return items;
}
public static class TestStickyAdapter extends RecyclerView.Adapter<ViewHolder> implements StickyHeaderAdapter<HeaderHolder> {
private LayoutInflater mInflater;
private List<Item> items;
public TestStickyAdapter(Context context, List<Item> items) {
mInflater = LayoutInflater.from(context);
this.items = items;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
final View view = mInflater.inflate(R.layout.item_test, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.item.setText("Item " + items.get(position).position);
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public long getHeaderId(int position) {
return (long) items.get(position).header;
}
@Override
public HeaderHolder onCreateHeaderViewHolder(ViewGroup parent) {
final View view = mInflater.inflate(R.layout.header_test, parent, false);
return new HeaderHolder(view);
}
@Override
public void onBindHeaderViewHolder(HeaderHolder viewholder, int position) {
viewholder.header.setText("Header " + items.get(position).header);
}
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView item;
public ViewHolder(View itemView) {
super(itemView);
item = (TextView) itemView;
}
}
public static class HeaderHolder extends RecyclerView.ViewHolder {
public TextView header;
public HeaderHolder(View itemView) {
super(itemView);
header = (TextView) itemView;
}
}
private class Item {
public final int position;
public final int header;
private Item(int position, int header) {
this.position = position;
this.header = header;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment