package starter.kit.rx.app.feature.widget;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import butterknife.BindView;
import butterknife.OnClick;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import starter.kit.rx.app.R;
import starter.kit.feature.rx.RxStarterActivity;
import starter.kit.rx.app.feature.feed.FeedsViewHolder;
import starter.kit.rx.app.model.entity.Feed;
import starter.kit.util.ProgressInterface;
import starter.kit.util.RxUtils;
import support.ui.adapters.EasyRecyclerAdapter;
import support.ui.widget.SwipeRefreshLayout;
import static rx.android.schedulers.AndroidSchedulers.mainThread;
/**
* Created by YuGang Yang on 07 19, 2016.
* Copyright 2015-2016 qiji.tech. All rights reserved.
*/
public class DirectionActivity extends RxStarterActivity
implements SwipeRefreshLayout.OnRefreshListener, ProgressInterface {
@BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout swipeRefreshLayout;
@BindView(R.id.recyclerView) RecyclerView recyclerView;
private EasyRecyclerAdapter mAdapter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_direction);
swipeRefreshLayout.setOnRefreshListener(this);
swipeRefreshLayout.setColorSchemeColors(Color.BLUE, Color.GREEN, Color.RED, Color.YELLOW);
mAdapter = new EasyRecyclerAdapter(this);
mAdapter.bind(Feed.class, FeedsViewHolder.class);
recyclerView.setAdapter(mAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
@OnClick({
R.id.buttonBoth, R.id.buttonTop, R.id.buttonBottom, R.id.buttonRefresh,
}) public void onClick(View view) {
switch (view.getId()) {
case R.id.buttonBoth:
swipeRefreshLayout.setDirection(SwipeRefreshLayout.Direction.BOTH);
break;
case R.id.buttonTop:
swipeRefreshLayout.setDirection(SwipeRefreshLayout.Direction.TOP);
break;
case R.id.buttonBottom:
swipeRefreshLayout.setDirection(SwipeRefreshLayout.Direction.BOTTOM);
break;
case R.id.buttonRefresh:
doRefresh();
break;
}
}
@Override public void showProgress() {
Observable.empty()
.observeOn(mainThread())
.doOnTerminate(() -> swipeRefreshLayout.setRefreshing(true))
.subscribe();
}
@Override public void hideProgress() {
rx.Observable.empty()
.observeOn(mainThread())
.doOnTerminate(() -> swipeRefreshLayout.setRefreshing(false))
.subscribe();
}
@Override public void onRefresh(SwipeRefreshLayout.Direction direction) {
doRefresh();
}
private void doRefresh() {
rx.Observable.empty()
.subscribeOn(Schedulers.io())
.delay(5, TimeUnit.SECONDS)
.compose(RxUtils.progressTransformer(this))
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
}
}