11package org .buildmlearn .toolkit .adapter ;
22
3+ import android .app .Activity ;
34import android .content .Context ;
45import android .graphics .Color ;
56import android .support .annotation .ColorRes ;
67import android .support .v7 .widget .CardView ;
8+ import android .support .v7 .widget .RecyclerView ;
79import android .view .LayoutInflater ;
810import android .view .View ;
911import android .view .ViewGroup ;
10- import android .widget .BaseAdapter ;
1112import android .widget .ImageView ;
1213import android .widget .TextView ;
1314
1617
1718/**
1819 * @brief Adapter used for showing Templates available in the toolkit
19- *
20+ * <p>
2021 * Created by Abhishek on 23-05-2015.
2122 */
22- public class TemplateAdapter extends BaseAdapter {
23+ public class TemplateAdapter extends RecyclerView . Adapter < RecyclerView . ViewHolder > {
2324
2425 private final Context context ;
2526
2627 private final Template [] templates = Template .values ();
2728 private final ListColor [] colors = ListColor .values ();
29+ private ViewHolder .SetOnClickListener listener ;
2830
2931 public TemplateAdapter (Context context ) {
3032 this .context = context ;
3133 }
3234
33- /**
34- * {@inheritDoc}
35- */
36- @ Override
37- public int getCount () {
38- return templates .length ;
35+ public void setOnClickListener (ViewHolder .SetOnClickListener clickListener ) {
36+ this .listener = clickListener ;
3937 }
4038
41- /**
42- * {@inheritDoc}
43- */
4439 @ Override
40+ public RecyclerView .ViewHolder onCreateViewHolder (ViewGroup viewGroup , int position ) {
41+ int layoutResource = 0 ;
42+ LayoutInflater inflater = ((Activity ) context ).getLayoutInflater ();
43+ int viewType = getItemViewType (position );
44+ switch (viewType ) {
45+ case 0 :
46+ layoutResource = R .layout .item_template_right ;
47+ break ;
48+ case 1 :
49+ layoutResource = R .layout .item_template_left ;
50+ break ;
51+ }
52+
53+ View view = inflater .inflate (layoutResource , viewGroup , false );
54+ RecyclerView .ViewHolder viewHolder = new ViewHolder (view );
55+
56+ return viewHolder ;
57+ }
58+
4559 public Template getItem (int i ) {
4660 return templates [i ];
4761 }
4862
63+ @ Override
64+ public void onBindViewHolder (RecyclerView .ViewHolder viewHolder , int position ) {
65+
66+ ViewHolder vh = (ViewHolder ) viewHolder ;
67+ Template template = getItem (position );
68+
69+ vh .getTitle ().setText (template .getTitle ());
70+ vh .getDescription ().setText (template .getDescription ());
71+ vh .getImage ().setImageResource (template .getImage ());
72+
73+ int color = colors [position % colors .length ].getColor ();
74+ vh .getCardView ().setCardBackgroundColor (color );
75+ vh .setItemClickListener (listener );
76+
77+ }
78+
79+ @ Override
80+ public int getItemCount () {
81+ return templates .length ;
82+ }
83+
4984 /**
5085 * {@inheritDoc}
5186 */
@@ -54,34 +89,12 @@ public long getItemId(int i) {
5489 return i ;
5590 }
5691
57- /**
58- * {@inheritDoc}
59- */
6092 @ Override
61- public View getView (int i , View view , ViewGroup viewGroup ) {
62-
63- LayoutInflater mInflater ;
64- mInflater = LayoutInflater .from (context );
65-
66- if (i % 2 == 0 ) {
67- view = mInflater .inflate (R .layout .item_template_right , viewGroup , false );
68- } else {
69- view = mInflater .inflate (R .layout .item_template_left , viewGroup , false );
70- }
71-
72- Template template = getItem (i );
73-
74- ((TextView ) view .findViewById (R .id .title )).setText (template .getTitle ());
75- ((TextView ) view .findViewById (R .id .description )).setText (template .getDescription ());
76- ((ImageView ) view .findViewById (R .id .image )).setImageResource (template .getImage ());
77-
78- int color = colors [i % colors .length ].getColor ();
79- ((CardView ) view .findViewById (R .id .card_view )).setCardBackgroundColor (color );
80-
81- return view ;
93+ public int getItemViewType (int position ) {
94+ return position % 2 ;
8295 }
8396
84- private enum ListColor {
97+ enum ListColor {
8598 BLUE ("#29A6D4" ),
8699 GREEN ("#1C7D6C" ),
87100 ORANGE ("#F77400" ),
@@ -104,4 +117,74 @@ public int getColor() {
104117 return color ;
105118 }
106119 }
120+
121+ public interface SetOnClickListener extends ViewHolder .SetOnClickListener {
122+ void onItemClick (int position , View itemView );
123+ }
124+
125+ public static class ViewHolder extends RecyclerView .ViewHolder {
126+ public TextView title ;
127+ public TextView description ;
128+ public ImageView image ;
129+ public CardView cardView ;
130+ SetOnClickListener listener ;
131+
132+ public ViewHolder (final View v ) {
133+ super (v );
134+ title = ((TextView ) v .findViewById (R .id .title ));
135+ description = ((TextView ) v .findViewById (R .id .description ));
136+ image = ((ImageView ) v .findViewById (R .id .image ));
137+ cardView = ((CardView ) v .findViewById (R .id .card_view ));
138+
139+ v .setClickable (true );
140+ v .setOnClickListener (new View .OnClickListener () {
141+ @ Override
142+ public void onClick (View view ) {
143+ if (listener != null ) {
144+ listener .onItemClick (getAdapterPosition (), v );
145+ }
146+ }
147+ });
148+ }
149+
150+ public ImageView getImage () {
151+ return image ;
152+ }
153+
154+ public void setImage (ImageView image ) {
155+ this .image = image ;
156+ }
157+
158+ public CardView getCardView () {
159+ return cardView ;
160+ }
161+
162+ public void setCardView (CardView cardView ) {
163+ this .cardView = cardView ;
164+ }
165+
166+ public TextView getDescription () {
167+ return description ;
168+ }
169+
170+ public void setDescription (TextView description ) {
171+ this .description = description ;
172+ }
173+
174+ public TextView getTitle () {
175+ return title ;
176+ }
177+
178+ public void setTitle (TextView title ) {
179+ this .title = title ;
180+ }
181+
182+ public void setItemClickListener (SetOnClickListener itemClickListener ) {
183+ this .listener = itemClickListener ;
184+ }
185+
186+ public interface SetOnClickListener {
187+ void onItemClick (int position , View itemView );
188+ }
189+ }
107190}
0 commit comments