Skip to content

Instantly share code, notes, and snippets.

@AruLNadhaN
Last active January 10, 2017 07:52
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 AruLNadhaN/dc023c5854dab5000b73e800ae96fc70 to your computer and use it in GitHub Desktop.
Save AruLNadhaN/dc023c5854dab5000b73e800ae96fc70 to your computer and use it in GitHub Desktop.
public abstract class BaseActivity extends CompositeActivity {
Unbinder unbinder;
private ActivityComponent mActivityComponent;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
// call it before super.onCreate because providePresenter will be called there
activityComponent().inject((BrowseActivity) this);
super.onCreate(savedInstanceState);
setContentView(getContentView());
unbinder = ButterKnife.bind(this);
onViewReady(savedInstanceState, getIntent());
}
@CallSuper
protected void onViewReady(Bundle savedInstanceState, Intent intent){
}
@Override
public void onDestroy() {
super.onDestroy();
unbinder.unbind();
}
protected abstract int getContentView();
public ActivityComponent activityComponent() {
if (mActivityComponent == null) {
mActivityComponent = DaggerActivityComponent.builder()
.activityModule(new ActivityModule(this))
.applicationComponent(GApplication.get(this).getComponent())
.build();
}
return mActivityComponent;
}
}
public class BrowseActivity extends BaseActivity implements BrowseView{
@BindView(R.id.list)
RecyclerView mRecyclerView;
@Inject
DataManager mDataManager;
@Inject
BrowsePresenter mBrowsePresenter;
@Inject
BrowseAdapter mBrowseAdapter;
private final TiActivityPlugin<BrowsePresenter, BrowseView> mPresenterPlugin = new TiActivityPlugin<BrowsePresenter, BrowseView>(
() -> new BrowsePresenter(mDataManager));
public BrowseActivity(){
addPlugin(mPresenterPlugin);
}
@Override
protected void onViewReady(Bundle savedInstanceState, Intent intent) {
super.onViewReady(savedInstanceState, intent);
activityComponent().inject(this);
setupViews();
assert bmb != null;
bmb.setButtonEnum(ButtonEnum.TextInsideCircle);
bmb.setPiecePlaceEnum(PiecePlaceEnum.DOT_9_1);
bmb.setButtonPlaceEnum(ButtonPlaceEnum.SC_9_2);
TextInsideCircleButton.Builder builder = new TextInsideCircleButton.Builder()
.normalImageRes(R.drawable.cat_beverages)
.normalText("Beverages")
.normalColorRes(R.color.orange)
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
mBrowsePresenter.getProductsByCat(MYConstants.CAT_BEVERAGES); ----> Calling the PRESENTER when the Button is Clicked!
}
});
bmb.addBuilder(builder);
}
}
@Override
public void updateItems(List<Product> items) {
mBrowseAdapter.setNewData(items);
mBrowseAdapter.notifyDataSetChanged();
Timber.d("Adapter Count" + items.get(0).productName() + mBrowseAdapter.getData().size());
}
private void setupViews() {
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, 1));
mRecyclerView.setAdapter(mBrowseAdapter);
}
@Override
protected int getContentView() {
return R.layout.activity_main;
}
@Override
public void showProgress() {
Timber.d("Hello Progress");
}
@Override
public void hideProgress() {
}
@Override
public void showItems(List<Item> items) {
}
@Override
public void showMessageLayout(boolean show) {
}
@Override
public void showText(String s) {
Timber.d("LOG", s);
}
}
public class BrowsePresenter extends TiPresenter<BrowseView> {
private final DataManager mDataManager;
private RxTiPresenterSubscriptionHandler rxHelper = new RxTiPresenterSubscriptionHandler(this);
@Inject
public BrowsePresenter(DataManager dataManager) {
mDataManager = dataManager;
}
@Override
protected void onAttachView(@NonNull BrowseView view) {
super.onAttachView(view);
TiLog.setLogger(TiLog.LOGCAT);
getProducts();
}
public void getProductsByCat(String Category) {
// final BrowseView view = getView();
sendToView(view -> { getView().showText("From getProductsByCat!!!");});
TiLog.setLogger(TiLog.LOGCAT);
this.sendToView(BrowseView::showProgress);
mRef = mDatabase.child("S01/Products").child(Category);
rxHelper.manageViewSubscription(
RxFirebaseDatabase.observeValueEvent(mRef,
dataSnapshot -> {
List<Product> mProd = new ArrayList<>();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Timber.d("Count >>" + postSnapshot.getChildrenCount());
Product Prod = Product.create(postSnapshot);
mProd.add(Prod);
}
return mProd;
})
.subscribe(mProd -> {
for (int i = 0; i < 5; i++) {
Timber.d(mProd.get(i).productName());
}
TiLog.setLogger(TiLog.LOGCAT);
sendToView(view -> {
Timber.d("sendToView Called");
view.hideProgress();
view.showText("Hello");
view.updateItems(mProd);
});
})
);
}
public void getProducts() {
getView().showMessageLayout(false);
getView().showProgress();
rxHelper.manageSubscription(
mDataManager.getProducts()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new SingleSubscriber<List<Item>>() {
@Override
public void onSuccess(List<Item> products) {
getView().hideProgress();
if (!products.isEmpty()) {
getView().showItems(products);
} else {
getView().showEmpty();
}
}
@Override
public void onError(Throwable error) {
Timber.e(error, "There was an error retrieving the products");
getView().hideProgress();
getView().showError();
}
})
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment