diff --git a/app/build.gradle b/app/build.gradle index e82b6af..13ae210 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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" diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseItem.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseItem.java index 07a1333..c251e05 100644 --- a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseItem.java +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseItem.java @@ -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; diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseListAdapter.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseListAdapter.java index 05eacb3..a3831d8 100644 --- a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseListAdapter.java +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseListAdapter.java @@ -22,7 +22,7 @@ public BaseListAdapter(){ presenter.setAdapter( this ); } - abstract P createPresenter(); + public abstract P createPresenter(); @Override public P getPresenter(){ diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseListAdapterInterface.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseListAdapterInterface.java index a065d9d..488d2c6 100644 --- a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseListAdapterInterface.java +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseListAdapterInterface.java @@ -2,7 +2,7 @@ import java.util.List; -interface BaseListAdapterInterface { +public interface BaseListAdapterInterface { interface Adapter { Presenter getPresenter(); diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseViewHolder.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseViewHolder.java index 22dc637..f3a5692 100644 --- a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseViewHolder.java +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/BaseViewHolder.java @@ -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)); diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapter.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapter.java new file mode 100644 index 0000000..23f72f3 --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapter.java @@ -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 + extends BaseListAdapter + implements LoadmoreAdapterInterface.Adapter { + + private OnLoadMoreListener loadMoreListener; + + public void setOnLoadMoreListener(OnLoadMoreListener listener) { + this.loadMoreListener = listener; + } + + public void setItems(List 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(); + } + } + } +} diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapterInterface.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapterInterface.java new file mode 100644 index 0000000..852e98a --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapterInterface.java @@ -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 + extends BaseListAdapterInterface.Presenter { + void setItems(List items, boolean isNextItemAvailable); + } +} + diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapterPresenter.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapterPresenter.java new file mode 100644 index 0000000..afe6341 --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/loadmore/LoadmoreAdapterPresenter.java @@ -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 + extends BaseListAdapterPresenter implements LoadmoreAdapterInterface.Presenter { + + 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 items, boolean isNextItemAvailable) { + super.setItems(items); + this.isNextItemAvailable = isNextItemAvailable; + } +} diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/progress/ProgressHolder.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/progress/ProgressHolder.java new file mode 100644 index 0000000..6fb0fa0 --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/progress/ProgressHolder.java @@ -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); + } +} diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/progress/ProgressItem.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/progress/ProgressItem.java new file mode 100644 index 0000000..154c72d --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/base/adapter/progress/ProgressItem.java @@ -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); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListAdapter.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListAdapter.java new file mode 100644 index 0000000..cf688dd --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListAdapter.java @@ -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 + 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; + } +} diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListAdapterPresenter.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListAdapterPresenter.java new file mode 100644 index 0000000..f87b476 --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListAdapterPresenter.java @@ -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 + implements ShowListPresenterInterface.Presenter { + + public static ShowListPresenterInterface.Presenter create() { + return new ShowListAdapterPresenter(); + } +} diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListPresenterInterface.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListPresenterInterface.java new file mode 100644 index 0000000..83f662f --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListPresenterInterface.java @@ -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 { + + } +} diff --git a/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListViewHolder.java b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListViewHolder.java new file mode 100644 index 0000000..a60f06d --- /dev/null +++ b/app/src/main/java/com/wisdomlanna/www/dagger2_mvp_example/ui/showlist/adapter/ShowListViewHolder.java @@ -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); + } +} diff --git a/app/src/main/res/layout/holder_progress.xml b/app/src/main/res/layout/holder_progress.xml new file mode 100644 index 0000000..08a432b --- /dev/null +++ b/app/src/main/res/layout/holder_progress.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 47c8224..39c6b3b 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,4 +2,6 @@ 16dp 16dp + 4dp + 8dp