diff options
| author | Lars Greiss <kufikugel@googlemail.com> | 2014-02-27 23:53:33 +0100 |
|---|---|---|
| committer | Lars Greiss <kufikugel@googlemail.com> | 2014-02-27 23:53:33 +0100 |
| commit | 88b9aa23109f30e6603d553586661c49c74b6275 (patch) | |
| tree | ea543656609e5755adbdd34d46ef21cb847d9f70 | |
| parent | 1bd369e9022e43dae368e7ae1b7123d45bb5264b (diff) | |
Cardslib: use viewholder in the different card layouts
Again a tiny optimization which helps listviews to prevent
expensive calls for fiendViewById.
Add viewholder to CardHeader, CardExpanded and Card.
Change-Id: Ie363208c836e055e95ec4f58a351496ecbfa8972
| -rw-r--r-- | src/com/android/cards/internal/Card.java | 20 | ||||
| -rw-r--r-- | src/com/android/cards/internal/CardExpand.java | 24 | ||||
| -rw-r--r-- | src/com/android/cards/internal/CardHeader.java | 27 |
3 files changed, 57 insertions, 14 deletions
diff --git a/src/com/android/cards/internal/Card.java b/src/com/android/cards/internal/Card.java index 1292278..9386599 100644 --- a/src/com/android/cards/internal/Card.java +++ b/src/com/android/cards/internal/Card.java @@ -258,6 +258,7 @@ public class Card extends BaseCard { * This method sets values to header elements and customizes view. * <p/> * Override this method to set your elements inside InnerView. + * If you use listviews it is recommend to user a Viewholder like here. * * @param parent parent view (Inner Frame) * @param view Inner View @@ -267,12 +268,25 @@ public class Card extends BaseCard { //Add simple title to header if (view != null) { - TextView mTitleView = (TextView) view.findViewById(R.id.card_main_inner_simple_title); - if (mTitleView != null) - mTitleView.setText(mTitle); + ViewHolder holder; + holder = (ViewHolder) view.getTag(); + + if (holder == null) { + holder = new ViewHolder(); + holder.titleView = + (TextView) view.findViewById(R.id.card_main_inner_simple_title); + view.setTag(holder); + } + if (holder.titleView != null) { + holder.titleView.setText(mTitle); + } } + } + static class ViewHolder { + TextView titleView; + } // ------------------------------------------------------------- // CardThumbnail diff --git a/src/com/android/cards/internal/CardExpand.java b/src/com/android/cards/internal/CardExpand.java index 718be7a..e0d34fe 100644 --- a/src/com/android/cards/internal/CardExpand.java +++ b/src/com/android/cards/internal/CardExpand.java @@ -145,6 +145,7 @@ public class CardExpand extends BaseCard { * This method sets values to expand elements and customizes view. * * Override this method to customize your Expand View + * If you use listviews it is recommend to user a Viewholder like here. * * @param parent Expand external Layout * @param view inner-expand view @@ -152,12 +153,25 @@ public class CardExpand extends BaseCard { @Override public void setupInnerViewElements(ViewGroup parent, View view) { - //Add simple title to expand area - if (view!=null){ - TextView mTitleView=(TextView) view.findViewById(R.id.card_expand_inner_simple_title); - if (mTitleView!=null) - mTitleView.setText(mTitle); + // Add simple title to expand area + if (view != null) { + ViewHolder holder; + holder = (ViewHolder) view.getTag(); + + if (holder == null) { + holder = new ViewHolder(); + holder.titleView = + (TextView) view.findViewById(R.id.card_expand_inner_simple_title); + view.setTag(holder); + } + if (holder.titleView != null) { + holder.titleView.setText(mTitle); + } } + } + static class ViewHolder { + TextView titleView; + } } diff --git a/src/com/android/cards/internal/CardHeader.java b/src/com/android/cards/internal/CardHeader.java index 0507d1b..49b8bed 100644 --- a/src/com/android/cards/internal/CardHeader.java +++ b/src/com/android/cards/internal/CardHeader.java @@ -367,22 +367,37 @@ public class CardHeader extends BaseCard { * This method sets values to header elements and customizes view. * * Override this method to set your elements inside InnerView. + * If you use listviews it is recommend to user a Viewholder like here. * * @param parent parent view (Inner Frame) * @param view Inner View */ @Override - public void setupInnerViewElements(ViewGroup parent,View view){ + public void setupInnerViewElements(ViewGroup parent, View view) { + + // Add simple title to header + if (view != null) { + ViewHolder holder; + holder = (ViewHolder) view.getTag(); + + if (holder == null) { + holder = new ViewHolder(); + holder.titleView = + (TextView) view.findViewById(R.id.card_header_inner_simple_title); + view.setTag(holder); + } - //Add simple title to header - if (view!=null){ - TextView mTitleView=(TextView) view.findViewById(R.id.card_header_inner_simple_title); - if (mTitleView!=null) - mTitleView.setText(mTitle); + if (holder.titleView != null) { + holder.titleView.setText(mTitle); + } } } + static class ViewHolder { + TextView titleView; + } + // ------------------------------------------------------------- // Getters and Setters // ------------------------------------------------------------- |
