From 464c0b27203b90b96c7f41d4d87cf13fa6387a03 Mon Sep 17 00:00:00 2001 From: Halzyn Date: Thu, 28 May 2015 15:32:51 +0200 Subject: CardView what it says --- app/build.gradle | 4 + .../java/org/rssin/android/FilterActivity.java | 95 +++++++++++++++------- app/src/main/res/layout/activity_filter.xml | 20 +++-- app/src/main/res/layout/item_feeditem.xml | 38 +++++++-- 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, VolleyError>() { @Override public void onReceive(List 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 { - Context context; - int layoutResourceId; + private static class FeedItemAdapter extends RecyclerView.Adapter { List feedItems; - public FeedItemAdapter(Context context, int resource, List objects) { - super(context, resource, objects); - this.context = context; - layoutResourceId = resource; + public FeedItemAdapter(List 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 @@ - - + + + - + \ 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 @@ + android:padding="15dp"> - + card_view:cardElevation="4dp" + card_view:cardCornerRadius="4dp"> + + + + + + + + + + - \ 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 } -- cgit v1.2.3