aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Greiss <kufikugel@googlemail.com>2014-02-27 23:53:33 +0100
committerLars Greiss <kufikugel@googlemail.com>2014-02-27 23:53:33 +0100
commit88b9aa23109f30e6603d553586661c49c74b6275 (patch)
treeea543656609e5755adbdd34d46ef21cb847d9f70
parent1bd369e9022e43dae368e7ae1b7123d45bb5264b (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.java20
-rw-r--r--src/com/android/cards/internal/CardExpand.java24
-rw-r--r--src/com/android/cards/internal/CardHeader.java27
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
// -------------------------------------------------------------