Skip to content

Commit 57d0dd2

Browse files
committed
Changed template editor listView to recyclerView
1 parent a785099 commit 57d0dd2

8 files changed

Lines changed: 133 additions & 97 deletions

File tree

source-code/app/src/main/java/org/buildmlearn/toolkit/activity/TemplateActivity.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44
import android.os.Bundle;
55
import android.support.v7.app.ActionBar;
66
import android.support.v7.app.AppCompatActivity;
7+
import android.support.v7.widget.LinearLayoutManager;
8+
import android.support.v7.widget.RecyclerView;
79
import android.support.v7.widget.Toolbar;
810
import android.view.View;
9-
import android.widget.AbsListView;
10-
import android.widget.AdapterView;
11-
import android.widget.ListAdapter;
1211

1312
import org.buildmlearn.toolkit.R;
1413
import org.buildmlearn.toolkit.adapter.TemplateAdapter;
@@ -30,18 +29,17 @@ protected void onCreate(Bundle savedInstanceState) {
3029
ActionBar actionBar = getSupportActionBar();
3130
actionBar.setDisplayHomeAsUpEnabled(true);
3231
actionBar.setHomeButtonEnabled(true);
33-
ListAdapter mAdapter = new TemplateAdapter(this);
34-
AbsListView mListView = (AbsListView) findViewById(android.R.id.list);
35-
mListView.setAdapter(mAdapter);
32+
TemplateAdapter mAdapter = new TemplateAdapter(this);
33+
RecyclerView mRecyclerView = (RecyclerView) findViewById(android.R.id.list);
34+
mRecyclerView.setAdapter(mAdapter);
35+
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
3636

37-
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
37+
mAdapter.setOnClickListener(new TemplateAdapter.SetOnClickListener() {
3838
@Override
39-
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
40-
39+
public void onItemClick(int position, View view) {
4140
Intent intent = new Intent(getApplicationContext(), TemplateEditor.class);
4241
intent.putExtra(Constants.TEMPLATE_ID, position);
4342
startActivity(intent);
44-
4543
}
4644
});
4745
}
Lines changed: 120 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package org.buildmlearn.toolkit.adapter;
22

3+
import android.app.Activity;
34
import android.content.Context;
45
import android.graphics.Color;
56
import android.support.annotation.ColorRes;
67
import android.support.v7.widget.CardView;
8+
import android.support.v7.widget.RecyclerView;
79
import android.view.LayoutInflater;
810
import android.view.View;
911
import android.view.ViewGroup;
10-
import android.widget.BaseAdapter;
1112
import android.widget.ImageView;
1213
import android.widget.TextView;
1314

@@ -16,36 +17,70 @@
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
}

source-code/app/src/main/res/layout-sw600dp/item_template_right.xml

Lines changed: 0 additions & 46 deletions
This file was deleted.

source-code/app/src/main/res/layout/activity_template_list.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<include layout="@layout/toolbar_layout" />
88

9-
<ListView
9+
<android.support.v7.widget.RecyclerView
1010
android:id="@android:id/list"
1111
android:layout_width="match_parent"
1212
android:layout_height="match_parent"

source-code/app/src/main/res/layout/item_template_left.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
android:id="@+id/card_view"
55
android:layout_width="match_parent"
66
android:layout_height="wrap_content"
7+
android:layout_marginBottom="@dimen/layout_margin"
78
android:foreground="?attr/selectableItemBackground"
89
android:minHeight="@dimen/cardview_template_height"
910
card_view:cardCornerRadius="@dimen/cardview_default_radius"

source-code/app/src/main/res/layout/item_template_right.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
android:id="@+id/card_view"
55
android:layout_width="match_parent"
66
android:layout_height="wrap_content"
7+
android:layout_marginBottom="@dimen/layout_margin"
78
android:foreground="?attr/selectableItemBackground"
89
android:minHeight="@dimen/cardview_template_height"
910
card_view:cardCornerRadius="@dimen/cardview_default_radius"
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<resources>
2-
3-
<item name="activity_template" type="layout">@layout/activity_template_grid</item>
2+
<item name="activity_template" type="layout">@layout/activity_template_list</item>
43
<item name="fragment_loadproject" type="layout">@layout/fragment_loadproject_grid</item>
54

65
</resources>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<resources>
22

3-
<item name="activity_template" type="layout">@layout/activity_template_grid</item>
3+
<item name="activity_template" type="layout">@layout/activity_template_list</item>
44
<item name="fragment_loadproject" type="layout">@layout/fragment_loadproject_grid</item>
55

66
</resources>

0 commit comments

Comments
 (0)