Created
May 16, 2017 21:10
-
-
Save paramsen/d6b2b0d158bb801f1301139c7c76c105 to your computer and use it in GitHub Desktop.
StickyHeaderAdapter impl for Mike
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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