Skip to content

Commit

Permalink
getting rid of TYPE
Browse files Browse the repository at this point in the history
  • Loading branch information
vivchar committed Nov 16, 2017
1 parent 7522cad commit ce6270e
Show file tree
Hide file tree
Showing 31 changed files with 211 additions and 215 deletions.
Expand Up @@ -13,31 +13,31 @@
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import com.github.vivchar.example.pages.github.items.selected.UserViewRenderer;
import com.github.vivchar.example.widgets.EndlessScrollListener;
import com.github.vivchar.example.widgets.MyItemDecoration;
import com.github.vivchar.example.R;
import com.github.vivchar.example.pages.github.items.ItemsDiffCallback;
import com.github.vivchar.example.pages.github.items.list.RecyclerViewRenderer;
import com.github.vivchar.example.pages.github.items.category.CategoryModel;
import com.github.vivchar.example.pages.github.items.category.CategoryViewRenderer;
import com.github.vivchar.example.pages.github.items.fork.ForkModel;
import com.github.vivchar.example.pages.github.items.fork.ForkViewRenderer;
import com.github.vivchar.example.pages.github.items.list.RecyclerViewRenderer;
import com.github.vivchar.example.pages.github.items.selected.UserViewRenderer;
import com.github.vivchar.example.pages.github.items.stargazer.StargazerModel;
import com.github.vivchar.example.pages.github.items.stargazer.StargazerViewRenderer;
import com.github.vivchar.example.widgets.EndlessScrollListener;
import com.github.vivchar.example.widgets.MyItemDecoration;
import com.github.vivchar.network.MainManager;
import com.github.vivchar.rendererrecyclerviewadapter.CompositeViewRenderer;
import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;
import com.github.vivchar.rendererrecyclerviewadapter.LoadMoreViewRenderer;
import com.github.vivchar.rendererrecyclerviewadapter.RendererRecyclerViewAdapter;
import com.github.vivchar.rendererrecyclerviewadapter.ViewRenderer;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

Expand Down Expand Up @@ -81,13 +81,11 @@ protected void onCreate(final Bundle savedInstanceState) {
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(final int position) {
switch (mRecyclerViewAdapter.getItemViewType(position)) {
case ForkModel.TYPE:
case StargazerModel.TYPE:
return 1;
default:
return 3;
final Type type = mRecyclerViewAdapter.getType(position);
if (type.equals(ForkModel.class) || type.equals(StargazerModel.class)) {
return 1;
}
return 3;
}
});

Expand All @@ -105,17 +103,17 @@ public void onLoadMore(final int page, final int totalItemsCount) {

@NonNull
private ViewRenderer createForkRenderer() {
return new ForkViewRenderer(ForkModel.TYPE, this, new Listener());
return new ForkViewRenderer(this, new Listener());
}

@NonNull
private ViewRenderer createStargazerRenderer(final int layout) {
return new StargazerViewRenderer(StargazerModel.TYPE, layout, this, new Listener());
return new StargazerViewRenderer(layout, this, new Listener());
}

@NonNull
private ViewRenderer createCategoryRenderer() {
return new CategoryViewRenderer(CategoryModel.TYPE, this, new Listener());
return new CategoryViewRenderer(this, new Listener());
}

@NonNull
Expand All @@ -126,7 +124,7 @@ private CompositeViewRenderer createListRenderer() {
@NonNull
private ViewRenderer createUserRenderer() {
/* vivchar: ideally we should use other model */
return new UserViewRenderer(StargazerModel.TYPE, this);
return new UserViewRenderer(this);
}

@Override
Expand Down Expand Up @@ -167,7 +165,7 @@ public boolean onOptionsItemSelected(final MenuItem item) {
private final GithubPresenter.View mMainPresenterView = new GithubPresenter.View() {

@Override
public void updateList(@NonNull final List<ItemModel> list) {
public void updateList(@NonNull final List<ViewModel> list) {
mRecyclerViewAdapter.setItems(list);
}

Expand Down Expand Up @@ -196,7 +194,7 @@ public void showMessageView(@NonNull final String message) {
}

@Override
public void showSelectedUsers(@NonNull final ArrayList<ItemModel> list) {
public void showSelectedUsers(@NonNull final ArrayList<ViewModel> list) {
final RendererRecyclerViewAdapter adapter = new RendererRecyclerViewAdapter();
adapter.registerRenderer(createUserRenderer());

Expand Down
Expand Up @@ -12,7 +12,7 @@
import com.github.vivchar.example.pages.github.items.stargazer.StargazerModel;
import com.github.vivchar.network.ForksManager;
import com.github.vivchar.network.StargazersManager;
import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;

import java.util.ArrayList;
import java.util.HashSet;
Expand All @@ -21,7 +21,6 @@

import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;


Expand Down Expand Up @@ -80,13 +79,13 @@ public void viewShown() {
)).toList()
);

final Observable<List<ItemModel>> combineLatest = Observable.combineLatest(
final Observable<List<ViewModel>> combineLatest = Observable.combineLatest(
stargazers,
topStargazers,
forks,
(stargazerModels, topStargazersModels, forkModels) -> {

final ArrayList<ItemModel> allModels = new ArrayList<>();
final ArrayList<ViewModel> allModels = new ArrayList<>();


/*
Expand Down Expand Up @@ -204,12 +203,12 @@ public void onLoadMore() {
}

public interface View extends IView {
void updateList(@NonNull List<ItemModel> list);
void updateList(@NonNull List<ViewModel> list);
void showProgressView();
void hideProgressView();
void showMessageView(@NonNull String message, @NonNull String url);
void showMessageView(@NonNull String message);
void showSelectedUsers(@NonNull ArrayList<ItemModel> list);
void showSelectedUsers(@NonNull ArrayList<ViewModel> list);
void clearSelections();
void showDoneButton();
void hideDoneButton();
Expand Down
Expand Up @@ -6,21 +6,20 @@

import com.github.vivchar.example.pages.github.items.list.RecyclerViewModel;
import com.github.vivchar.rendererrecyclerviewadapter.DefaultDiffCallback;
import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;

import java.util.ArrayList;
import java.util.List;

/**
* Created by Vivchar Vitaly on 20.10.17.
*/

public class ItemsDiffCallback extends DefaultDiffCallback<ItemModel> {
public class ItemsDiffCallback extends DefaultDiffCallback<ViewModel> {

private static final String TAG = ItemsDiffCallback.class.getSimpleName();

@Override
public boolean areItemsTheSame(@NonNull final ItemModel oldItem, @NonNull final ItemModel newItem) {
public boolean areItemsTheSame(@NonNull final ViewModel oldItem, @NonNull final ViewModel newItem) {
/* vivchar: Ideally you should create a BaseItemModel with the getID method */
if (oldItem instanceof RecyclerViewModel) {
if (newItem instanceof RecyclerViewModel) {
Expand All @@ -35,13 +34,13 @@ public boolean areItemsTheSame(@NonNull final ItemModel oldItem, @NonNull final
}

@Override
public boolean areContentsTheSame(@NonNull final ItemModel oldItem, @NonNull final ItemModel newItem) {
public boolean areContentsTheSame(@NonNull final ViewModel oldItem, @NonNull final ViewModel newItem) {
return super.areContentsTheSame(oldItem, newItem);
}

@Nullable
@Override
public Object getChangePayload(@NonNull final ItemModel oldItem, @NonNull final ItemModel newItem) {
public Object getChangePayload(@NonNull final ViewModel oldItem, @NonNull final ViewModel newItem) {
if (oldItem instanceof RecyclerViewModel) {
if (newItem instanceof RecyclerViewModel) {
/* vivchar: I just want to call the RecyclerViewRenderer.rebindView() method */
Expand Down
Expand Up @@ -2,26 +2,20 @@

import android.support.annotation.NonNull;

import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;

/**
* Created by Vivchar Vitaly on 1/10/17.
*/
public class CategoryModel implements ItemModel {
public class CategoryModel implements ViewModel {

public static final int TYPE = 1;
@NonNull
private final String mTitle;

public CategoryModel(@NonNull final String title) {
mTitle = title;
}

@Override
public int getType() {
return TYPE;
}

@NonNull
public String getName() {
return mTitle;
Expand Down
Expand Up @@ -17,8 +17,8 @@ public class CategoryViewRenderer extends ViewRenderer<CategoryModel, CategoryVi
@NonNull
private final Listener mListener;

public CategoryViewRenderer(final int type, final Context context, @NonNull final Listener listener) {
super(type, context);
public CategoryViewRenderer(final Context context, @NonNull final Listener listener) {
super(CategoryModel.class, context);
mListener = listener;
}

Expand Down
Expand Up @@ -2,14 +2,12 @@

import android.support.annotation.NonNull;

import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;

/**
* Created by Vivchar Vitaly on 1/10/17.
*/
public class ForkModel implements ItemModel {

public static final int TYPE = 2;
public class ForkModel implements ViewModel {

@NonNull
private final String mName;
Expand All @@ -24,11 +22,6 @@ public ForkModel(@NonNull final String name, @NonNull final String avatarUrl, @N
mHtmlUrl = htmlUrl;
}

@Override
public int getType() {
return TYPE;
}

@NonNull
public String getName() {
return mName;
Expand Down
Expand Up @@ -23,8 +23,8 @@ public class ForkViewRenderer extends ViewRenderer<ForkModel, ForkViewHolder> {
@NonNull
private final Listener mListener;

public ForkViewRenderer(final int type, final Context context, @NonNull final Listener listener) {
super(type, context);
public ForkViewRenderer(final Context context, @NonNull final Listener listener) {
super(ForkModel.class, context);
mListener = listener;
}

Expand Down
Expand Up @@ -2,23 +2,22 @@

import android.support.annotation.NonNull;

import com.github.vivchar.rendererrecyclerviewadapter.CompositeItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.DefaultCompositeItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.CompositeViewModel;
import com.github.vivchar.rendererrecyclerviewadapter.DefaultCompositeViewModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;

import java.util.List;

/**
* Created by Vivchar Vitaly on 8/24/17.
*/

public class RecyclerViewModel extends DefaultCompositeItemModel {
public class RecyclerViewModel extends DefaultCompositeViewModel {

public static final int TYPE = 3;
private int mID;
private final int mID;

public RecyclerViewModel(final int ID, @NonNull final List<? extends ItemModel> items) {
super(TYPE, items);
public RecyclerViewModel(final int ID, @NonNull final List<? extends ViewModel> items) {
super(items);
mID = ID;
}

Expand All @@ -28,7 +27,7 @@ public int getID() {

@Override
public boolean equals(final Object o) {
return o instanceof CompositeItemModel && mItems.equals(((CompositeItemModel) o).getItems());
return o instanceof CompositeViewModel && mItems.equals(((CompositeViewModel) o).getItems());
}

@Override
Expand Down
Expand Up @@ -12,7 +12,7 @@
import com.github.vivchar.example.widgets.NestedAdapter;
import com.github.vivchar.rendererrecyclerviewadapter.CompositeViewRenderer;
import com.github.vivchar.rendererrecyclerviewadapter.DefaultDiffCallback;
import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;
import com.github.vivchar.rendererrecyclerviewadapter.RendererRecyclerViewAdapter;
import com.github.vivchar.rendererrecyclerviewadapter.ViewState;

Expand All @@ -28,7 +28,7 @@ public class RecyclerViewRenderer extends CompositeViewRenderer<RecyclerViewMode
private static final String TAG = RecyclerViewRenderer.class.getSimpleName();

public RecyclerViewRenderer(@NonNull final Context context) {
super(RecyclerViewModel.TYPE, context);
super(RecyclerViewModel.class, context);
}

@Override
Expand All @@ -54,7 +54,7 @@ public RecyclerViewHolder createCompositeViewHolder(@Nullable final ViewGroup pa

@Nullable
@Override
public ViewState createViewState(@NonNull final ItemModel model, @NonNull final RecyclerViewHolder holder) {
public ViewState createViewState(@NonNull final ViewModel model, @NonNull final RecyclerViewHolder holder) {
return new RecyclerViewState(holder);
}

Expand Down
Expand Up @@ -5,7 +5,7 @@

import com.github.vivchar.rendererrecyclerviewadapter.CompositeViewHolder;
import com.github.vivchar.rendererrecyclerviewadapter.CompositeViewState;
import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewState;

/**
Expand All @@ -23,7 +23,7 @@ public RecyclerViewState(@NonNull final CompositeViewHolder holder) {
}

@Override
public void restore(@NonNull final ItemModel model, @NonNull final RecyclerViewHolder holder) {
public void restore(@NonNull final ViewModel model, @NonNull final RecyclerViewHolder holder) {
super.restore(model, holder);
holder.adapter.setViewStates(mViewStates);
}
Expand Down
Expand Up @@ -20,8 +20,8 @@
*/
public class UserViewRenderer extends ViewRenderer<StargazerModel, UserViewHolder> {

public UserViewRenderer(final int type, final Context context) {
super(type, context);
public UserViewRenderer(@NonNull final Context context) {
super(StargazerModel.class, context);
}

@Override
Expand Down
Expand Up @@ -2,15 +2,14 @@

import android.support.annotation.NonNull;

import com.github.vivchar.rendererrecyclerviewadapter.ItemModel;
import com.github.vivchar.rendererrecyclerviewadapter.ViewModel;

/**
* Created by Vivchar Vitaly on 10.10.17.
*/

public class StargazerModel implements ItemModel {
public class StargazerModel implements ViewModel {

public static final int TYPE = 4;
@NonNull
private final String mName;
@NonNull
Expand All @@ -24,11 +23,6 @@ public StargazerModel(@NonNull final String name, @NonNull final String avatarUr
mHtmlUrl = htmlUrl;
}

@Override
public int getType() {
return TYPE;
}

@NonNull
public String getName() {
return mName;
Expand Down

0 comments on commit ce6270e

Please sign in to comment.