diff --git a/.idea/misc.xml b/.idea/misc.xml index fbb6828..5d19981 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index d3ae3a4..9661a3a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,13 +28,14 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' - testCompile 'junit:junit:4.12' testCompile "org.mockito:mockito-core:1.9.5" compile 'com.android.support:appcompat-v7:23.3.0' + compile 'com.android.support:recyclerview-v7:23.3.0' + compile 'com.android.support:cardview-v7:23.3.0' compile 'com.android.support:design:23.3.0' + compile 'com.android.support:support-v4:23.3.0' compile 'com.jakewharton:butterknife:7.0.1' compile 'com.jakewharton.timber:timber:4.1.2' compile 'io.realm:realm-android:0.84.1' - compile 'com.android.support:support-v4:23.3.0' } diff --git a/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/LargeArticleCard.java b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/LargeArticleCard.java new file mode 100644 index 0000000..18253cd --- /dev/null +++ b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/LargeArticleCard.java @@ -0,0 +1,21 @@ +package edu.grinnell.grinnell_publications_android.Controllers.Cards; + +import edu.grinnell.grinnell_publications_android.Controllers.RecyclerItem; +import edu.grinnell.grinnell_publications_android.R; + +/** + * + */ +public class LargeArticleCard extends RecyclerItem { + + public static final int LARGE_ARTICLE = R.layout.card_article_large; + + String title; + + public LargeArticleCard() { + super(LARGE_ARTICLE); + title = "This is a Large Article"; + } + + +} diff --git a/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/LargeArticleHolder.java b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/LargeArticleHolder.java new file mode 100644 index 0000000..a35e659 --- /dev/null +++ b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/LargeArticleHolder.java @@ -0,0 +1,30 @@ +package edu.grinnell.grinnell_publications_android.Controllers.Cards; + +import android.app.Activity; +import android.view.View; +import android.widget.TextView; + +import butterknife.Bind; +import butterknife.ButterKnife; +import edu.grinnell.grinnell_publications_android.Controllers.RecyclerViewHolder; +import edu.grinnell.grinnell_publications_android.R; + +/** + */ +public class LargeArticleHolder extends RecyclerViewHolder { + + @Bind(R.id.tv_article_title) + TextView title; + + public LargeArticleHolder(View itemView) { + super(itemView); + } + + + @Override + public void bindView(LargeArticleCard largeArticleCard, Activity activity) { + ButterKnife.bind(activity); + + title.setText(largeArticleCard.title); + } +} diff --git a/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/SmallArticleCard.java b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/SmallArticleCard.java new file mode 100644 index 0000000..cc4c7a6 --- /dev/null +++ b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/SmallArticleCard.java @@ -0,0 +1,19 @@ +package edu.grinnell.grinnell_publications_android.Controllers.Cards; + +import edu.grinnell.grinnell_publications_android.Controllers.RecyclerItem; +import edu.grinnell.grinnell_publications_android.R; + +/** + * + */ +public class SmallArticleCard extends RecyclerItem { + + public static final int SMALL_ARTICLE = R.layout.card_article_small; + String title; + + public SmallArticleCard() { + super(SMALL_ARTICLE); + title = "This is a Small Article"; + } + +} diff --git a/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/SmallArticleHolder.java b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/SmallArticleHolder.java new file mode 100644 index 0000000..42c8de5 --- /dev/null +++ b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/Cards/SmallArticleHolder.java @@ -0,0 +1,29 @@ +package edu.grinnell.grinnell_publications_android.Controllers.Cards; + +import android.app.Activity; +import android.view.View; +import android.widget.TextView; + +import butterknife.Bind; +import butterknife.ButterKnife; +import edu.grinnell.grinnell_publications_android.Controllers.RecyclerViewHolder; +import edu.grinnell.grinnell_publications_android.R; + +/** + * + */ +public class SmallArticleHolder extends RecyclerViewHolder { + @Bind(R.id.tv_article_title) + TextView title; + + public SmallArticleHolder(View itemView) { + super(itemView); + } + + @Override + public void bindView(SmallArticleCard smallArticleCard, Activity activity) { + ButterKnife.bind(activity); + + title.setText(smallArticleCard.title); + } +} diff --git a/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/MainRecyclerViewAdapter.java b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/MainRecyclerViewAdapter.java new file mode 100644 index 0000000..0ef15a4 --- /dev/null +++ b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/MainRecyclerViewAdapter.java @@ -0,0 +1,71 @@ +package edu.grinnell.grinnell_publications_android.Controllers; + +import android.app.Activity; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import java.util.ArrayList; +import java.util.List; + +import edu.grinnell.grinnell_publications_android.Controllers.Cards.LargeArticleCard; +import edu.grinnell.grinnell_publications_android.Controllers.Cards.LargeArticleHolder; +import edu.grinnell.grinnell_publications_android.Controllers.Cards.SmallArticleCard; +import edu.grinnell.grinnell_publications_android.Controllers.Cards.SmallArticleHolder; + +/** + * + */ +public class MainRecyclerViewAdapter extends RecyclerView.Adapter { + + private List data; + private Activity activity; + + public MainRecyclerViewAdapter(Activity activity) { + this.data = new ArrayList<>(); + this.activity = activity; + } + + /** + * Update the data for the recycler view + * + * @param data a list of recycler items that will populate the recycler view + */ + public void setData(List data) { + this.data = data; + notifyDataSetChanged(); + } + + + @Override + public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater li = activity.getLayoutInflater(); + RecyclerViewHolder holder; + switch (viewType) { + case SmallArticleCard.SMALL_ARTICLE: + holder = new SmallArticleHolder(li.inflate(SmallArticleCard.SMALL_ARTICLE, parent)); + break; + case LargeArticleCard.LARGE_ARTICLE: + holder = new LargeArticleHolder(li.inflate(LargeArticleCard.LARGE_ARTICLE, parent)); + break; + default: + holder = null; + } + return holder; + } + + @Override + public void onBindViewHolder(RecyclerViewHolder holder, int position) { + holder.bindView(data.get(position), activity); + } + + @Override + public int getItemCount() { + return 0; + } + + @Override + public int getItemViewType(int position) { + return data.get(position).getViewType(); + } +} diff --git a/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/RecyclerItem.java b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/RecyclerItem.java new file mode 100644 index 0000000..5c05dc0 --- /dev/null +++ b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/RecyclerItem.java @@ -0,0 +1,25 @@ +package edu.grinnell.grinnell_publications_android.Controllers; + +/** + * + */ +public abstract class RecyclerItem { + + private int viewType; + + /** + * Constructor + * + * @param layoutId the integer identifier for the view type. + * Use the resource id of the layout as the view type. + */ + public RecyclerItem(int layoutId) { + this.viewType = layoutId; + + } + + public int getViewType() { + return viewType; + } + +} diff --git a/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/RecyclerViewHolder.java b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/RecyclerViewHolder.java new file mode 100644 index 0000000..ad32814 --- /dev/null +++ b/app/src/main/java/edu/grinnell/grinnell_publications_android/Controllers/RecyclerViewHolder.java @@ -0,0 +1,33 @@ +package edu.grinnell.grinnell_publications_android.Controllers; + +import android.app.Activity; +import android.support.v7.widget.RecyclerView; +import android.view.View; + + +/** + * + */ +public abstract class RecyclerViewHolder extends RecyclerView.ViewHolder{ + + + public RecyclerViewHolder(View itemView) { + super(itemView); + } + + /** + * Getter for the itemView from the super class + * @return the itemView for the recycler item + */ + public View getItemView() { + return super.itemView; + } + + /** + * + * @param recyclerItem + * @param activity + */ + public abstract void bindView(T recyclerItem, Activity activity); + +} diff --git a/app/src/main/res/layout/card_article_large.xml b/app/src/main/res/layout/card_article_large.xml new file mode 100644 index 0000000..0611c7d --- /dev/null +++ b/app/src/main/res/layout/card_article_large.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/card_article_small.xml b/app/src/main/res/layout/card_article_small.xml new file mode 100644 index 0000000..d8014b3 --- /dev/null +++ b/app/src/main/res/layout/card_article_small.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml deleted file mode 100644 index 63fc816..0000000 --- a/app/src/main/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 64dp - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index eb10e23..fd659ee 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -5,4 +5,7 @@ 76dp 76dp + 12dp + 16sp + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 379ac96..f90ecdc 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -12,5 +12,12 @@ + + +