Skip to content

Commit

Permalink
🪲 bus base adapter.
Browse files Browse the repository at this point in the history
  • Loading branch information
PondThaitay committed May 14, 2017
1 parent 6d71bdc commit 333cfc4
Show file tree
Hide file tree
Showing 16 changed files with 224 additions and 4 deletions.
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ dependencies {

compile "com.android.support:appcompat-v7:$supportVersion"
compile "com.android.support:design:$supportVersion"
compile "com.android.support:cardview-v7:$supportVersion"

compile "com.jakewharton:butterknife:$butterknifeVersion"
annotationProcessor "com.jakewharton:butterknife-compiler:$butterknifeVersion"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter;

@org.parceler.Parcel(org.parceler.Parcel.Serialization.BEAN)
class BaseItem {
public class BaseItem {

private int type;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public BaseListAdapter(){
presenter.setAdapter( this );
}

abstract P createPresenter();
public abstract P createPresenter();

@Override
public P getPresenter(){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.List;

interface BaseListAdapterInterface {
public interface BaseListAdapterInterface {

interface Adapter {
Presenter getPresenter();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import butterknife.ButterKnife;

abstract class BaseViewHolder extends RecyclerView.ViewHolder {
public abstract class BaseViewHolder extends RecyclerView.ViewHolder {

public BaseViewHolder(ViewGroup parent, int layout) {
super(LayoutInflater.from(parent.getContext()).inflate(layout, parent, false));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.loadmore;

import android.view.ViewGroup;

import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseItem;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseItemType;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseListAdapter;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseViewHolder;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.progress.ProgressHolder;

import java.util.List;

public abstract class LoadmoreAdapter<VH extends BaseViewHolder, P extends LoadmoreAdapterInterface.Presenter>
extends BaseListAdapter<VH, P>
implements LoadmoreAdapterInterface.Adapter {

private OnLoadMoreListener loadMoreListener;

public void setOnLoadMoreListener(OnLoadMoreListener listener) {
this.loadMoreListener = listener;
}

public void setItems(List<BaseItem> items, boolean isNextItemAvailable) {
getPresenter().setItems(items, isNextItemAvailable);
}

@SuppressWarnings("unchecked")
@Override
public VH onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == BaseItemType.TYPE_PROGRESS) {
return (VH) new ProgressHolder(parent);
}
return null;
}

@Override
public void onBindViewHolder(VH holder, int position) {
if (getItemViewType(position) == BaseItemType.TYPE_PROGRESS) {
if (loadMoreListener != null) {
loadMoreListener.onLoadMore();
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.loadmore;

import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseItem;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseListAdapterInterface;

import java.util.List;

public interface LoadmoreAdapterInterface {

interface Adapter extends BaseListAdapterInterface.Adapter {
}

interface Presenter<A extends LoadmoreAdapterInterface.Adapter>
extends BaseListAdapterInterface.Presenter<A> {
void setItems(List<BaseItem> items, boolean isNextItemAvailable);
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.loadmore;

import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseItem;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseItemType;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseListAdapterPresenter;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.progress.ProgressItem;

import java.util.List;

public abstract class LoadmoreAdapterPresenter<A extends LoadmoreAdapterInterface.Adapter>
extends BaseListAdapterPresenter<A> implements LoadmoreAdapterInterface.Presenter<A> {

private boolean isNextItemAvailable;

@Override
public int getItemViewType(int pos) {
if (pos >= super.getItemCount()) {
return BaseItemType.TYPE_PROGRESS;
}
return super.getItemViewType(pos);
}

@Override
public int getItemCount() {
int count = super.getItemCount();
if (isNextItemAvailable) {
count++;
}
return count;
}


@Override
public BaseItem getItem(int pos) {
if (pos >= super.getItemCount()) {
return new ProgressItem();
}
return super.getItem(pos);
}

@Override
public void setItems(List<BaseItem> items, boolean isNextItemAvailable) {
super.setItems(items);
this.isNextItemAvailable = isNextItemAvailable;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.progress;

import android.view.ViewGroup;

import com.wisdomlanna.www.dagger2_mvp_example.R;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseViewHolder;

public class ProgressHolder extends BaseViewHolder {

public ProgressHolder(ViewGroup viewGroup) {
super(viewGroup, R.layout.holder_progress);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.progress;

import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseItem;
import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseItemType;

public class ProgressItem extends BaseItem {
public ProgressItem() {
super(BaseItemType.TYPE_PROGRESS);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.showlist.adapter;

import android.view.ViewGroup;

import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseListAdapter;

public class ShowListAdapter extends BaseListAdapter<ShowListViewHolder, ShowListPresenterInterface.Presenter>
implements ShowListPresenterInterface.Adapter {

@Override
public ShowListPresenterInterface.Presenter createPresenter() {
return ShowListAdapterPresenter.create();
}

@Override
public ShowListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}

@Override
public void onBindViewHolder(ShowListViewHolder holder, int position) {

}

@Override
public int getItemCount() {
return 0;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.showlist.adapter;

import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseListAdapterPresenter;

class ShowListAdapterPresenter extends BaseListAdapterPresenter<ShowListPresenterInterface.Adapter>
implements ShowListPresenterInterface.Presenter {

public static ShowListPresenterInterface.Presenter create() {
return new ShowListAdapterPresenter();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.showlist.adapter;

import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseListAdapterInterface;

class ShowListPresenterInterface {

interface Adapter extends BaseListAdapterInterface.Adapter {

}

interface Presenter extends BaseListAdapterInterface.Presenter<ShowListPresenterInterface.Adapter> {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.wisdomlanna.www.dagger2_mvp_example.ui.showlist.adapter;

import android.view.ViewGroup;

import com.wisdomlanna.www.dagger2_mvp_example.ui.base.adapter.BaseViewHolder;

class ShowListViewHolder extends BaseViewHolder {

public ShowListViewHolder(ViewGroup parent, int layout) {
super(parent, layout);
}
}
20 changes: 20 additions & 0 deletions app/src/main/res/layout/holder_progress.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clickable="true"
android:layout_marginEnd="@dimen/default_padding_margin_small"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true">

<ProgressBar
android:layout_margin="@dimen/default_padding_margin"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</android.support.v7.widget.CardView>
2 changes: 2 additions & 0 deletions app/src/main/res/values/dimens.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="default_padding_margin_small">4dp</dimen>
<dimen name="default_padding_margin">8dp</dimen>
</resources>

0 comments on commit 333cfc4

Please sign in to comment.