77import android .view .LayoutInflater ;
88import android .view .View ;
99import android .view .ViewGroup ;
10- import android .widget .Button ;
1110import android .widget .ProgressBar ;
12- import android .widget .TextView ;
1311
1412import com .morihacky .android .rxjava .MainActivity ;
1513import com .morihacky .android .rxjava .R ;
@@ -34,7 +32,7 @@ public class PaginationFragment extends BaseFragment {
3432 @ Bind (R .id .progress_paging ) ProgressBar _progressBar ;
3533
3634 private CompositeSubscription _subscriptions ;
37- private TestAdapter _adapter ;
35+ private PaginationAdapter _adapter ;
3836 private RxBus _bus ;
3937 private PublishSubject <Integer > _paginator ;
4038
@@ -48,7 +46,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
4846 layoutManager .setOrientation (LinearLayoutManager .VERTICAL );
4947 _pagingList .setLayoutManager (layoutManager );
5048
51- _adapter = new TestAdapter (_bus );
49+ _adapter = new PaginationAdapter (_bus );
5250 _pagingList .setAdapter (_adapter );
5351
5452 _paginator = PublishSubject .create ();
@@ -77,7 +75,7 @@ public void onStart() {
7775 // I'm using an Rxbus purely to hear from a nested button click
7876 // we don't really need Rx for this part. it's just easy ¯\_(ツ)_/¯
7977 Subscription s1 = _bus .asObservable ().subscribe (event -> {
80- if (event instanceof ItemBtnViewHolder .PageEvent ) {
78+ if (event instanceof PaginationAdapter . ItemBtnViewHolder .PageEvent ) {
8179
8280 // trigger the paginator for the next event
8381 int nextPage = _adapter .getItemCount () - 1 ;
@@ -127,89 +125,4 @@ public View onCreateView(LayoutInflater inflater,
127125 }
128126
129127
130- private static class TestAdapter extends RecyclerView .Adapter <RecyclerView .ViewHolder > {
131-
132- static final int ITEM_LOG = 0 ;
133- static final int ITEM_BTN = 1 ;
134-
135- final List <String > _items = new ArrayList <>();
136- final RxBus _bus ;
137-
138- TestAdapter (RxBus bus ) {
139- _bus = bus ;
140- }
141-
142- void addItems (List <String > items ) {
143- _items .addAll (items );
144- }
145-
146- @ Override
147- public int getItemViewType (int position ) {
148- if (position == _items .size ()) {
149- return ITEM_BTN ;
150- }
151-
152- return ITEM_LOG ;
153- }
154-
155- @ Override
156- public RecyclerView .ViewHolder onCreateViewHolder (ViewGroup parent , int viewType ) {
157- switch (viewType ) {
158- case ITEM_BTN :
159- return ItemBtnViewHolder .create (parent );
160- default :
161- return ItemLogViewHolder .create (parent );
162- }
163- }
164-
165- @ Override
166- public void onBindViewHolder (RecyclerView .ViewHolder holder , int position ) {
167- switch (getItemViewType (position )) {
168- case ITEM_LOG :
169- ((ItemLogViewHolder ) holder ).bindContent (_items .get (position ));
170- return ;
171- case ITEM_BTN :
172- ((ItemBtnViewHolder ) holder ).bindContent (_bus );
173- }
174- }
175-
176- @ Override
177- public int getItemCount () {
178- return _items .size () + 1 ; // add 1 for paging button
179- }
180- }
181-
182- private static class ItemLogViewHolder extends RecyclerView .ViewHolder {
183- ItemLogViewHolder (View itemView ) {
184- super (itemView );
185- }
186-
187- static ItemLogViewHolder create (ViewGroup parent ) {
188- return new ItemLogViewHolder (LayoutInflater .from (parent .getContext ())
189- .inflate (R .layout .item_log , parent , false ));
190- }
191-
192- void bindContent (String content ) {
193- ((TextView ) itemView ).setText (content );
194- }
195- }
196-
197- private static class ItemBtnViewHolder extends RecyclerView .ViewHolder {
198- ItemBtnViewHolder (View itemView ) {
199- super (itemView );
200- }
201-
202- static ItemBtnViewHolder create (ViewGroup parent ) {
203- return new ItemBtnViewHolder (LayoutInflater .from (parent .getContext ())
204- .inflate (R .layout .item_btn , parent , false ));
205- }
206-
207- void bindContent (RxBus bus ) {
208- ((Button ) itemView ).setText (R .string .btn_demo_pagination_more );
209- itemView .setOnClickListener (v -> bus .send (new PageEvent ()));
210- }
211-
212- static class PageEvent {
213- }
214- }
215128}
0 commit comments