Last active
January 10, 2017 07:52
-
-
Save AruLNadhaN/dc023c5854dab5000b73e800ae96fc70 to your computer and use it in GitHub Desktop.
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
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; | |
} | |
} |
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
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); | |
} | |
} |
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
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