diff options
-rw-r--r-- | app/build.gradle | 4 | ||||
-rw-r--r-- | app/src/main/java/org/rssin/android/FilterActivity.java | 95 | ||||
-rw-r--r-- | app/src/main/res/layout/activity_filter.xml | 20 | ||||
-rw-r--r-- | app/src/main/res/layout/item_feeditem.xml | 38 | ||||
-rw-r--r-- | build.gradle | 1 |
5 files changed, 110 insertions, 48 deletions
diff --git a/app/build.gradle b/app/build.gradle index 95bbeb0..0938eb1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,4 +24,8 @@ dependencies { compile 'com.android.support:appcompat-v7:22.0.0' compile 'com.android.support:support-v4:22.0.0' compile files('libs/volley.jar') + compile 'com.android.support:cardview-v7:21.0.+' + compile 'com.android.support:recyclerview-v7:21.0.+' + + } diff --git a/app/src/main/java/org/rssin/android/FilterActivity.java b/app/src/main/java/org/rssin/android/FilterActivity.java index b1be925..6c827d1 100644 --- a/app/src/main/java/org/rssin/android/FilterActivity.java +++ b/app/src/main/java/org/rssin/android/FilterActivity.java @@ -5,6 +5,8 @@ import android.content.Context; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.text.Html; import android.view.LayoutInflater; import android.view.Menu; @@ -31,10 +33,17 @@ public class FilterActivity extends ActionBarActivity { private FiltersList filtersList; private Filter filter; + private RecyclerView mRecyclerView; + private RecyclerView.Adapter mAdapter; + private RecyclerView.LayoutManager mLayoutManager; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_filter); + mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); + mLayoutManager = new LinearLayoutManager(this); + mRecyclerView.setLayoutManager(mLayoutManager); try { filtersList = FiltersList.getInstance(this); @@ -52,13 +61,14 @@ public class FilterActivity extends ActionBarActivity { setTitle(filter.getTitle()); final Activity activity = this; - final ListView itemsListView = (ListView) findViewById(R.id.filter_items_list); FeedLoaderAndSorter loaderAndSorter = new FeedLoaderAndSorter(filter); loaderAndSorter.getFilteredFeedItems(new VolleyFetcher(this), new FallibleListener<List<FeedItem>, VolleyError>() { @Override public void onReceive(List<FeedItem> data) { - FeedItemAdapter feedItemAdapter = new FeedItemAdapter(activity, R.layout.item_feeditem, data); - itemsListView.setAdapter(feedItemAdapter); + + FeedItemAdapter feedItemAdapter = new FeedItemAdapter(data); + mRecyclerView.setAdapter(feedItemAdapter); + mRecyclerView.setHasFixedSize(true); } @Override @@ -101,49 +111,72 @@ public class FilterActivity extends ActionBarActivity { /** * Custom ArrayAdapter to display Keywords */ - private static class FeedItemAdapter extends ArrayAdapter<FeedItem> { - Context context; - int layoutResourceId; + private static class FeedItemAdapter extends RecyclerView.Adapter<FeedItemAdapter.KeywordHolder> { List<FeedItem> feedItems; - public FeedItemAdapter(Context context, int resource, List<FeedItem> objects) { - super(context, resource, objects); - this.context = context; - layoutResourceId = resource; + public FeedItemAdapter(List<FeedItem> objects) { feedItems = objects; } - @Override - public View getView(int position, View convertView, ViewGroup parent) { - View row = convertView; - KeywordHolder holder = null; - - if (row == null) { - LayoutInflater inflater = ((Activity) context).getLayoutInflater(); - row = inflater.inflate(layoutResourceId, parent, false); +// @Override +// public View getView(int position, View convertView, ViewGroup parent) { +// View row = convertView; +// KeywordHolder holder = null; +// +// if (row == null) { +// LayoutInflater inflater = ((Activity) context).getLayoutInflater(); +// row = inflater.inflate(layoutResourceId, parent, false); +// +// holder = new KeywordHolder(); +// holder.title = (TextView) row.findViewById(R.id.feeditem_title); +// holder.summary = (TextView) row.findViewById(R.id.feeditem_summary); +// +// row.setTag(holder); +// } else { +// holder = (KeywordHolder) row.getTag(); +// } +// +// FeedItem feedItem = feedItems.get(position); +// holder.title.setText(feedItem.getTitle()); +// holder.summary.setText(Html.fromHtml(feedItem.getDescription())); +// +// return row; +// } - holder = new KeywordHolder(); - holder.title = (TextView) row.findViewById(R.id.feeditem_title); - holder.summary = (TextView) row.findViewById(R.id.feeditem_summary); - - row.setTag(holder); - } else { - holder = (KeywordHolder) row.getTag(); - } + @Override + public KeywordHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater. + from(parent.getContext()). + inflate(R.layout.item_feeditem, parent, false); + return new KeywordHolder(itemView); + } - FeedItem feedItem = feedItems.get(position); - holder.title.setText(feedItem.getTitle()); - holder.summary.setText(Html.fromHtml(feedItem.getDescription())); + @Override + public void onBindViewHolder(KeywordHolder holder, int position) { + FeedItem item = feedItems.get(position); + holder.title.setText(item.getTitle()); + holder.summary.setText(item.getDescription()); + } - return row; + @Override + public int getItemCount() { + return feedItems.size(); } /** * TextViews holder */ - private static class KeywordHolder { + static class KeywordHolder extends RecyclerView.ViewHolder { TextView title; TextView summary; + + public KeywordHolder(View itemView) { + super(itemView); + title = (TextView) itemView.findViewById(R.id.feeditem_title); + summary = (TextView) itemView.findViewById(R.id.feeditem_summary); + } } + + } } diff --git a/app/src/main/res/layout/activity_filter.xml b/app/src/main/res/layout/activity_filter.xml index b144d08..19b7fad 100644 --- a/app/src/main/res/layout/activity_filter.xml +++ b/app/src/main/res/layout/activity_filter.xml @@ -1,13 +1,15 @@ -<RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context="org.rssin.android.FilterActivity"> - <ListView - android:id="@+id/filter_items_list" +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +xmlns:tools="http://schemas.android.com/tools" +android:layout_width="match_parent" +android:layout_height="match_parent" +tools:context="org.rssin.android.FilterActivity"> + <!-- A RecyclerView with some commonly used attributes --> + + <android.support.v7.widget.RecyclerView + android:id="@+id/my_recycler_view" + android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="match_parent"/> -</RelativeLayout> + </LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/item_feeditem.xml b/app/src/main/res/layout/item_feeditem.xml index 9f4c553..0b3c944 100644 --- a/app/src/main/res/layout/item_feeditem.xml +++ b/app/src/main/res/layout/item_feeditem.xml @@ -1,19 +1,41 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:card_view="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:padding="10dp"> + android:padding="15dp"> - <TextView android:id="@+id/feeditem_title" - android:layout_width="fill_parent" + <android.support.v7.widget.CardView + android:id="@+id/filter_items_list" + android:layout_gravity="center" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:textSize="@dimen/font_size_normal"/> + card_view:cardElevation="4dp" + card_view:cardCornerRadius="4dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="8dp"> + + <TextView android:id="@+id/feeditem_title" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:text="Lorem Ipsum Dolor Sit Amet" + android:textSize="@dimen/font_size_huge"/> + <TextView android:id="@+id/feeditem_summary" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu pulvinar sapien, vel hendrerit lectus. Donec et sem lorem. Phasellus pharetra ornare ligula, sit amet volutpat nunc. Aenean posuere neque et leo gravida faucibus. Nunc ut neque sagittis, hendrerit tortor sit amet, interdum nisl. Quisque nibh elit, varius sed eros at, euismod commodo orci. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Duis interdum, sem porttitor feugiat fringilla, nunc ex blandit lorem, in ultrices dolor sapien et lorem. Vestibulum sit amet feugiat enim, eu luctus turpis. " + android:textSize="@dimen/font_size_small"/> + + </LinearLayout> + + + </android.support.v7.widget.CardView> - <TextView android:id="@+id/feeditem_summary" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:textSize="@dimen/font_size_small"/> </LinearLayout>
\ No newline at end of file diff --git a/build.gradle b/build.gradle index d3ff69d..75b58fa 100644 --- a/build.gradle +++ b/build.gradle @@ -7,6 +7,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:1.1.0' + // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } |