Skip to content

Commit f694de3

Browse files
committed
Rename sample adapter: AnimalsAdapter and fix it's getItemId()
Fixes timehop#80
1 parent 652414b commit f694de3

File tree

2 files changed

+24
-22
lines changed

2 files changed

+24
-22
lines changed
Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,32 +7,35 @@
77
import java.util.Collection;
88

99

10-
public abstract class RecyclerArrayAdapter<M, VH extends RecyclerView.ViewHolder>
10+
/**
11+
* Adapter holding a list of animal names of type String. Note that each item must be unique.
12+
*/
13+
public abstract class AnimalsAdapter<VH extends RecyclerView.ViewHolder>
1114
extends RecyclerView.Adapter<VH> {
12-
private ArrayList<M> items = new ArrayList<M>();
15+
private ArrayList<String> items = new ArrayList<String>();
1316

14-
public RecyclerArrayAdapter() {
17+
public AnimalsAdapter() {
1518
setHasStableIds(true);
1619
}
1720

18-
public void add(M object) {
21+
public void add(String object) {
1922
items.add(object);
2023
notifyDataSetChanged();
2124
}
2225

23-
public void add(int index, M object) {
26+
public void add(int index, String object) {
2427
items.add(index, object);
2528
notifyDataSetChanged();
2629
}
2730

28-
public void addAll(Collection<? extends M> collection) {
31+
public void addAll(Collection<? extends String> collection) {
2932
if (collection != null) {
3033
items.addAll(collection);
3134
notifyDataSetChanged();
3235
}
3336
}
3437

35-
public void addAll(M... items) {
38+
public void addAll(String... items) {
3639
addAll(Arrays.asList(items));
3740
}
3841

@@ -41,18 +44,18 @@ public void clear() {
4144
notifyDataSetChanged();
4245
}
4346

44-
public void remove(M object) {
47+
public void remove(String object) {
4548
items.remove(object);
4649
notifyDataSetChanged();
4750
}
4851

49-
public M getItem(int position) {
52+
public String getItem(int position) {
5053
return items.get(position);
5154
}
5255

5356
@Override
5457
public long getItemId(int position) {
55-
return position;
58+
return getItem(position).hashCode();
5659
}
5760

5861
@Override

sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/MainActivity.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import android.os.Looper;
99
import android.support.v7.widget.LinearLayoutManager;
1010
import android.support.v7.widget.RecyclerView;
11-
import android.util.Log;
1211
import android.view.LayoutInflater;
1312
import android.view.View;
1413
import android.view.ViewGroup;
@@ -35,22 +34,22 @@ protected void onCreate(Bundle savedInstanceState) {
3534
final ToggleButton isReverseButton = (ToggleButton) findViewById(R.id.button_is_reverse);
3635

3736
// Set adapter populated with example dummy data
38-
final SampleArrayHeadersAdapter mAdapter = new SampleArrayHeadersAdapter();
39-
mAdapter.add("Animals below!");
40-
mAdapter.addAll(getDummyDataSet());
41-
recyclerView.setAdapter(mAdapter);
37+
final AnimalsHeadersAdapter adapter = new AnimalsHeadersAdapter();
38+
adapter.add("Animals below!");
39+
adapter.addAll(getDummyDataSet());
40+
recyclerView.setAdapter(adapter);
4241

4342
// Set button to update all views one after another (Test for the "Dance")
4443
button.setOnClickListener(new View.OnClickListener() {
4544
@Override
4645
public void onClick(View v) {
4746
Handler handler = new Handler(Looper.getMainLooper());
48-
for (int i = 0; i < mAdapter.getItemCount(); i++) {
47+
for (int i = 0; i < adapter.getItemCount(); i++) {
4948
final int index = i;
5049
handler.postDelayed(new Runnable() {
5150
@Override
5251
public void run() {
53-
mAdapter.notifyItemChanged(index);
52+
adapter.notifyItemChanged(index);
5453
}
5554
}, 50);
5655
}
@@ -63,7 +62,7 @@ public void run() {
6362
recyclerView.setLayoutManager(layoutManager);
6463

6564
// Add the sticky headers decoration
66-
final StickyRecyclerHeadersDecoration headersDecor = new StickyRecyclerHeadersDecoration(mAdapter);
65+
final StickyRecyclerHeadersDecoration headersDecor = new StickyRecyclerHeadersDecoration(adapter);
6766
recyclerView.addItemDecoration(headersDecor);
6867

6968
// Add decoration for dividers between list items
@@ -84,10 +83,10 @@ public void onHeaderClick(View header, int position, long headerId) {
8483
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
8584
@Override
8685
public void onItemClick(View view, int position) {
87-
mAdapter.remove(mAdapter.getItem(position));
86+
adapter.remove(adapter.getItem(position));
8887
}
8988
}));
90-
mAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
89+
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
9190
@Override
9291
public void onChanged() {
9392
headersDecor.invalidateHeaders();
@@ -100,7 +99,7 @@ public void onClick(View v) {
10099
boolean isChecked = isReverseButton.isChecked();
101100
isReverseButton.setChecked(isChecked);
102101
layoutManager.setReverseLayout(isChecked);
103-
mAdapter.notifyDataSetChanged();
102+
adapter.notifyDataSetChanged();
104103
}
105104
});
106105
}
@@ -117,7 +116,7 @@ private int getLayoutManagerOrientation(int activityOrientation) {
117116
}
118117
}
119118

120-
private class SampleArrayHeadersAdapter extends RecyclerArrayAdapter<String, RecyclerView.ViewHolder>
119+
private class AnimalsHeadersAdapter extends AnimalsAdapter<RecyclerView.ViewHolder>
121120
implements StickyRecyclerHeadersAdapter<RecyclerView.ViewHolder> {
122121
@Override
123122
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

0 commit comments

Comments
 (0)