From 5204248350ffa2b9c18dd08ef1053fda01d2ad2a Mon Sep 17 00:00:00 2001 From: Andrew Rahn Date: Wed, 14 Dec 2016 09:40:09 -0600 Subject: [PATCH] Use Butterknife in a new viewholder --- app/build.gradle | 3 ++ .../lemonadestand/theme/ThemeAdapter.java | 17 ++++--- .../lemonadestand/theme/ThemeViewHolder.java | 47 +++++++++++++++++++ app/src/main/res/layout/theme_item.xml | 17 +++---- 4 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/net/paddlefish/lemonadestand/theme/ThemeViewHolder.java diff --git a/app/build.gradle b/app/build.gradle index c0501c6..a2bbc9e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -49,5 +49,8 @@ dependencies { compile 'com.squareup.retrofit2:converter-jackson:2.0.0-beta3' compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3' + compile 'com.jakewharton:butterknife:8.4.0' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' + testCompile 'junit:junit:4.12' } diff --git a/app/src/main/java/net/paddlefish/lemonadestand/theme/ThemeAdapter.java b/app/src/main/java/net/paddlefish/lemonadestand/theme/ThemeAdapter.java index 301b1fb..b0f4dc2 100644 --- a/app/src/main/java/net/paddlefish/lemonadestand/theme/ThemeAdapter.java +++ b/app/src/main/java/net/paddlefish/lemonadestand/theme/ThemeAdapter.java @@ -15,6 +15,8 @@ import net.paddlefish.lemonadestand.model.GameThemeDetails; import net.paddlefish.lemonadestand.utils.Preferences; +import butterknife.ButterKnife; + import static android.view.View.GONE; import static android.view.View.VISIBLE; @@ -31,25 +33,27 @@ public ThemeAdapter(Activity activity) { @NonNull @Override public View getView(int position, View convertView, @NonNull ViewGroup parent) { - View view = convertView; + ThemeViewHolder view = (ThemeViewHolder) convertView; if (view == null) { LayoutInflater inflater = LayoutInflater.from(getContext()); - view = inflater.inflate(R.layout.theme_item, parent, false); + view = (ThemeViewHolder) inflater.inflate(R.layout.theme_item, parent, false); + view.bindViews(); } GameThemeDetails theme = getItem(position); if (theme != null) { - ImageView iconView = (ImageView) view.findViewById(R.id.themeIcon); + ImageView iconView = view.mIconView; String url = theme.url; // FIXME : Use Glide to load that url into iconView + Glide.with(getContext()).load(url).into(iconView); - TextView themeInfoView = (TextView) view.findViewById(R.id.themeInfo); + TextView themeInfoView = view.mInfoView; themeInfoView.setText(theme.info); - TextView themeNameView = (TextView) view.findViewById(R.id.themeName); + TextView themeNameView = view.mNameView; themeNameView.setText(theme.name); - ImageView checkedView = (ImageView) view.findViewById(R.id.themeChecked); + ImageView checkedView = view.mCheckedView; Boolean isCurrentTheme = Preferences.isSelectedTheme(theme); if (isCurrentTheme) { checkedView.setVisibility(VISIBLE); @@ -60,5 +64,4 @@ public View getView(int position, View convertView, @NonNull ViewGroup parent) { return view; } - } diff --git a/app/src/main/java/net/paddlefish/lemonadestand/theme/ThemeViewHolder.java b/app/src/main/java/net/paddlefish/lemonadestand/theme/ThemeViewHolder.java new file mode 100644 index 0000000..f569ea9 --- /dev/null +++ b/app/src/main/java/net/paddlefish/lemonadestand/theme/ThemeViewHolder.java @@ -0,0 +1,47 @@ +package net.paddlefish.lemonadestand.theme; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import net.paddlefish.lemonadestand.R; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Simple ViewHolder for Theme ListView + * + * Created by arahn on 12/14/16. + */ +public class ThemeViewHolder extends LinearLayout { + @BindView(R.id.themeIcon) + ImageView mIconView; + @BindView(R.id.themeInfo) + TextView mInfoView; + @BindView(R.id.themeName) + TextView mNameView; + + ImageView mCheckedView; + + public ThemeViewHolder(Context context) { + super(context); + } + + public ThemeViewHolder(Context context, AttributeSet attrs) { + super(context, attrs); + } + + void bindViews() { + ButterKnife.bind(this); + + // FIXME: Use butterknife to bind mCheckedView to R.id.themeChecked + // Instead of this code: + // Delete from here... + mCheckedView = (ImageView) findViewById(R.id.themeChecked); + + // ... to here and replace with your implementation! + } +} diff --git a/app/src/main/res/layout/theme_item.xml b/app/src/main/res/layout/theme_item.xml index ccc5c87..4fbbd96 100644 --- a/app/src/main/res/layout/theme_item.xml +++ b/app/src/main/res/layout/theme_item.xml @@ -1,11 +1,12 @@ - + + - \ No newline at end of file + \ No newline at end of file