Skip to content

Commit 61ee042

Browse files
author
Appyown
committed
Expanding Collection Example
1 parent a35f2c9 commit 61ee042

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+2049
-3
lines changed

app/src/main/java/com/dvinfosys/WidgetsExample/Activity/HomeActivity.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.dvinfosys.WidgetsExample.Fragments.ColorPickerFragment;
1919
import com.dvinfosys.WidgetsExample.Fragments.CountdownViewFragment;
2020
import com.dvinfosys.WidgetsExample.Fragments.EditTextFragment;
21+
import com.dvinfosys.WidgetsExample.Fragments.ExpandingCollectionFragment;
2122
import com.dvinfosys.WidgetsExample.Fragments.FoldingCellFragment;
2223
import com.dvinfosys.WidgetsExample.Fragments.ImageviewFragment;
2324
import com.dvinfosys.WidgetsExample.Fragments.NumberCounterFragment;
@@ -36,8 +37,7 @@
3637
import com.dvinfosys.WidgetsExample.R;
3738
import com.dvinfosys.widgets.VideoPlayer.VPVideoPlayer;
3839

39-
public class HomeActivity extends AppCompatActivity
40-
implements NavigationView.OnNavigationItemSelectedListener {
40+
public class HomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
4141

4242
@Override
4343
protected void onCreate(Bundle savedInstanceState) {
@@ -131,6 +131,8 @@ public boolean onNavigationItemSelected(MenuItem item) {
131131
fragment = new SpotlightFragment();
132132
} else if (id == R.id.nav_paper_onboarding) {
133133
fragment = new PaperOnboardingFragment();
134+
} else if (id == R.id.nav_expanding_collection) {
135+
fragment = new ExpandingCollectionFragment();
134136
}
135137
if (fragment != null) {
136138
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.dvinfosys.WidgetsExample.Adapter;
2+
3+
import android.annotation.SuppressLint;
4+
import android.content.Context;
5+
import android.support.annotation.NonNull;
6+
import android.support.annotation.Nullable;
7+
import android.view.LayoutInflater;
8+
import android.view.View;
9+
import android.view.ViewGroup;
10+
import android.widget.ImageView;
11+
import android.widget.TextView;
12+
13+
import com.dvinfosys.WidgetsExample.Model.Comment;
14+
import com.dvinfosys.WidgetsExample.R;
15+
import com.dvinfosys.widgets.expandingcollection.ECCardContentListItemAdapter;
16+
17+
import java.util.List;
18+
19+
@SuppressLint({"SetTextI18n", "InflateParams"})
20+
public class CommentArrayAdapter extends ECCardContentListItemAdapter<Comment> {
21+
22+
public CommentArrayAdapter(@NonNull Context context, @NonNull List<Comment> objects) {
23+
super(context, R.layout.list_element, objects);
24+
}
25+
26+
@NonNull
27+
@Override
28+
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
29+
ViewHolder viewHolder;
30+
View rowView = convertView;
31+
32+
if (rowView == null) {
33+
LayoutInflater inflater = LayoutInflater.from(getContext());
34+
35+
rowView = inflater.inflate(R.layout.list_element, null);
36+
// configure view holder
37+
viewHolder = new ViewHolder();
38+
viewHolder.date = (TextView) rowView.findViewById(R.id.firstLineDate);
39+
viewHolder.line1 = (TextView) rowView.findViewById(R.id.firstLine);
40+
viewHolder.line2 = (TextView) rowView.findViewById(R.id.secondLine);
41+
viewHolder.icon = (ImageView) rowView.findViewById(R.id.icon);
42+
rowView.setTag(viewHolder);
43+
} else {
44+
viewHolder = (ViewHolder) rowView.getTag();
45+
}
46+
47+
final Comment objectItem = getItem(position);
48+
if (objectItem != null) {
49+
viewHolder.line1.setText(objectItem.getCommentPersonName() + ":");
50+
viewHolder.line2.setText(objectItem.getCommentText());
51+
viewHolder.date.setText(objectItem.getCommentDate());
52+
viewHolder.icon.setImageResource(objectItem.getCommentPersonPictureRes());
53+
}
54+
55+
// Removing item by tap on comment icon
56+
// viewHolder.icon.setOnClickListener(new View.OnClickListener() {
57+
// @Override
58+
// public void onClick(View v) {
59+
// CommentArrayAdapter.this.remove(objectItem);
60+
// CommentArrayAdapter.this.notifyDataSetChanged();
61+
// }
62+
// });
63+
64+
return rowView;
65+
}
66+
67+
static class ViewHolder {
68+
TextView date;
69+
TextView line1;
70+
TextView line2;
71+
ImageView icon;
72+
}
73+
74+
}
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package com.dvinfosys.WidgetsExample.DataSet;
2+
3+
import com.dvinfosys.WidgetsExample.Model.CardData;
4+
import com.dvinfosys.WidgetsExample.Model.Comment;
5+
import com.dvinfosys.WidgetsExample.R;
6+
import com.dvinfosys.widgets.expandingcollection.ECCardData;
7+
8+
import java.util.ArrayList;
9+
import java.util.Arrays;
10+
import java.util.Collections;
11+
import java.util.List;
12+
import java.util.Random;
13+
14+
public class ExampleDataset {
15+
16+
private List<ECCardData> dataset;
17+
18+
public ExampleDataset() {
19+
dataset = new ArrayList<>(5);
20+
21+
CardData item5 = new CardData();
22+
item5.setMainBackgroundResource(R.drawable.attractions);
23+
item5.setHeadBackgroundResource(R.drawable.attractions_head);
24+
item5.setHeadTitle("Attractions");
25+
item5.setPersonMessage("Usus de bassus buxum, desiderium index!");
26+
item5.setPersonName("Marjorie Ellis");
27+
item5.setPersonPictureResource(R.drawable.marjorie_ellis);
28+
item5.setListItems(prepareCommentsArray());
29+
dataset.add(item5);
30+
31+
CardData item4 = new CardData();
32+
item4.setMainBackgroundResource(R.drawable.city_scape);
33+
item4.setHeadBackgroundResource(R.drawable.city_scape_head);
34+
item4.setHeadTitle("City Scape");
35+
item4.setPersonMessage("Solems manducare, tanquam neuter verpa.");
36+
item4.setPersonName("Mattew Jordan");
37+
item4.setPersonPictureResource(R.drawable.mattew_jordan);
38+
item4.setListItems(prepareCommentsArray());
39+
dataset.add(item4);
40+
41+
CardData item3 = new CardData();
42+
item3.setMainBackgroundResource(R.drawable.cuisine);
43+
item3.setHeadBackgroundResource(R.drawable.cuisine_head);
44+
item3.setHeadTitle("Cuisine");
45+
item3.setPersonMessage("Magnum lacteas ducunt ad orexis.");
46+
item3.setPersonName("Ross Rodriguez");
47+
item3.setPersonPictureResource(R.drawable.ross_rodriguez);
48+
item3.setListItems(prepareCommentsArray());
49+
dataset.add(item3);
50+
51+
CardData item2 = new CardData();
52+
item2.setMainBackgroundResource(R.drawable.nature);
53+
item2.setHeadBackgroundResource(R.drawable.nature_head);
54+
item2.setHeadTitle("Nature");
55+
item2.setPersonName("Tina Caldwell");
56+
item2.setPersonMessage("Nunquam perdere clabulare.");
57+
item2.setListItems(prepareCommentsArray());
58+
item2.setPersonPictureResource(R.drawable.tina_caldwell);
59+
dataset.add(item2);
60+
61+
CardData item1 = new CardData();
62+
item1.setMainBackgroundResource(R.drawable.night_life);
63+
item1.setHeadBackgroundResource(R.drawable.night_life_head);
64+
item1.setHeadTitle("Night Life");
65+
item1.setPersonMessage("Cur adelphis studere?");
66+
item1.setPersonName("Wallace Sutton");
67+
item1.setPersonPictureResource(R.drawable.wallace_sutton);
68+
item1.setListItems(prepareCommentsArray());
69+
dataset.add(item1);
70+
71+
}
72+
73+
public List<ECCardData> getDataset() {
74+
Collections.shuffle(dataset);
75+
return dataset;
76+
}
77+
78+
private List<Comment> prepareCommentsArray() {
79+
Random random = new Random();
80+
List<Comment> comments = new ArrayList<>();
81+
comments.addAll(Arrays.asList(
82+
new Comment(R.drawable.aaron_bradley, "Aaron Bradley", "When the sensor experiments for deep space, all mermaids accelerate mysterious, vital moons.", "jan 12, 2014"),
83+
new Comment(R.drawable.barry_allen, "Barry Allen", "It is a cold powerdrain, sir.", "jun 1, 2015"),
84+
new Comment(R.drawable.bella_holmes, "Bella Holmes", "Particle of a calm shield, control the alignment!", "sep 21, 1937"),
85+
new Comment(R.drawable.caroline_shaw, "Caroline Shaw", "The human kahless quickly promises the phenomenan.", "may 23, 1967"),
86+
new Comment(R.drawable.connor_graham, "Connor Graham", "Ionic cannon at the infinity room was the sensor of voyage, imitated to a dead pathway.", "sep 1, 1972"),
87+
new Comment(R.drawable.deann_hunt, "Deann Hunt", "Vital particles, to the port.", "aug 13, 1995"),
88+
new Comment(R.drawable.ella_cole, "Ella Cole", "Stars fly with hypnosis at the boldly infinity room!", "nov 18, 1952"),
89+
new Comment(R.drawable.jayden_shaw, "Jayden Shaw", "Hypnosis, definition, and powerdrain.", "apr 1, 2013"),
90+
new Comment(R.drawable.jerry_carrol, "Jerry Carrol", "When the queen experiments for nowhere, all particles control reliable, cold captains.", "nov 14, 1964"),
91+
new Comment(R.drawable.lena_lucas, "Lena Lukas", "When the c-beam experiments for astral city, all cosmonauts acquire remarkable, virtual lieutenant commanders.", "may 4, 1965"),
92+
new Comment(R.drawable.leonrd_kim, "Leonard Kim", "Starships walk with love at the cold parallel universe!", "jul 3, 1974"),
93+
new Comment(R.drawable.marc_baker, "Mark Baker", "Friendship at the bridge that is when quirky green people yell.", "dec 24, 1989")));
94+
Collections.shuffle(comments);
95+
return comments.subList(0, 6 + random.nextInt(5));
96+
}
97+
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package com.dvinfosys.WidgetsExample.Fragments;
2+
3+
import android.content.Context;
4+
import android.graphics.Color;
5+
import android.os.Bundle;
6+
import android.support.annotation.NonNull;
7+
import android.support.annotation.Nullable;
8+
import android.support.v4.app.Fragment;
9+
import android.view.LayoutInflater;
10+
import android.view.View;
11+
import android.view.ViewGroup;
12+
import android.widget.AbsListView;
13+
import android.widget.FrameLayout;
14+
import android.widget.ImageView;
15+
import android.widget.ListView;
16+
import android.widget.TextView;
17+
18+
import com.dvinfosys.WidgetsExample.Adapter.CommentArrayAdapter;
19+
import com.dvinfosys.WidgetsExample.DataSet.ExampleDataset;
20+
import com.dvinfosys.WidgetsExample.Model.CardData;
21+
import com.dvinfosys.WidgetsExample.R;
22+
import com.dvinfosys.WidgetsExample.view.ItemsCountView;
23+
import com.dvinfosys.widgets.expandingcollection.ECBackgroundSwitcherView;
24+
import com.dvinfosys.widgets.expandingcollection.ECCardData;
25+
import com.dvinfosys.widgets.expandingcollection.ECPagerView;
26+
import com.dvinfosys.widgets.expandingcollection.ECPagerViewAdapter;
27+
28+
public class ExpandingCollectionFragment extends Fragment {
29+
30+
private ECPagerView ecPagerView;
31+
32+
@Override
33+
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
34+
View v = inflater.inflate(R.layout.fragment_expanding_collection, container, false);
35+
36+
ECPagerViewAdapter adapter = new ECPagerViewAdapter(getContext(), new ExampleDataset().getDataset()) {
37+
@Override
38+
public void instantiateCard(LayoutInflater inflaterService, ViewGroup head, ListView list, final ECCardData data) {
39+
final CardData cardData = (CardData) data;
40+
41+
// Create adapter for list inside a card and set adapter to card content
42+
CommentArrayAdapter commentArrayAdapter = new CommentArrayAdapter(getContext(), cardData.getListItems());
43+
list.setAdapter(commentArrayAdapter);
44+
list.setDivider(getResources().getDrawable(R.drawable.list_divider));
45+
list.setDividerHeight((int) pxFromDp(getContext(), 0.5f));
46+
list.setSelector(R.color.transparent);
47+
list.setBackgroundColor(Color.WHITE);
48+
list.setCacheColorHint(Color.TRANSPARENT);
49+
50+
// Add gradient to root header view
51+
View gradient = new View(getContext());
52+
gradient.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.MATCH_PARENT));
53+
gradient.setBackgroundDrawable(getResources().getDrawable(R.drawable.card_head_gradient));
54+
head.addView(gradient);
55+
56+
// Inflate main header layout and attach it to header root view
57+
inflaterService.inflate(R.layout.simple_head, head);
58+
59+
// Set header data from data object
60+
TextView title = (TextView) head.findViewById(R.id.title);
61+
title.setText(cardData.getHeadTitle());
62+
ImageView avatar = (ImageView) head.findViewById(R.id.avatar);
63+
avatar.setImageResource(cardData.getPersonPictureResource());
64+
TextView name = (TextView) head.findViewById(R.id.name);
65+
name.setText(cardData.getPersonName() + ":");
66+
TextView message = (TextView) head.findViewById(R.id.message);
67+
message.setText(cardData.getPersonMessage());
68+
TextView viewsCount = (TextView) head.findViewById(R.id.socialViewsCount);
69+
viewsCount.setText(" " + cardData.getPersonViewsCount());
70+
TextView likesCount = (TextView) head.findViewById(R.id.socialLikesCount);
71+
likesCount.setText(" " + cardData.getPersonLikesCount());
72+
TextView commentsCount = (TextView) head.findViewById(R.id.socialCommentsCount);
73+
commentsCount.setText(" " + cardData.getPersonCommentsCount());
74+
75+
// Add onclick listener to card header for toggle card state
76+
head.setOnClickListener(new View.OnClickListener() {
77+
@Override
78+
public void onClick(final View v) {
79+
ecPagerView.toggle();
80+
}
81+
});
82+
}
83+
};
84+
85+
ecPagerView = (ECPagerView) v.findViewById(R.id.ec_pager_element);
86+
87+
ecPagerView.setPagerViewAdapter(adapter);
88+
ecPagerView.setBackgroundSwitcherView((ECBackgroundSwitcherView) v.findViewById(R.id.ec_bg_switcher_element));
89+
90+
final ItemsCountView itemsCountView = (ItemsCountView) v.findViewById(R.id.items_count_view);
91+
ecPagerView.setOnCardSelectedListener(new ECPagerView.OnCardSelectedListener() {
92+
@Override
93+
public void cardSelected(int newPosition, int oldPosition, int totalElements) {
94+
itemsCountView.update(newPosition, oldPosition, totalElements);
95+
}
96+
});
97+
return v;
98+
}
99+
public static float dpFromPx(final Context context, final float px) {
100+
return px / context.getResources().getDisplayMetrics().density;
101+
}
102+
103+
public static float pxFromDp(final Context context, final float dp) {
104+
return dp * context.getResources().getDisplayMetrics().density;
105+
}
106+
107+
@Override
108+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
109+
super.onViewCreated(view, savedInstanceState);
110+
getActivity().setTitle("Expanding Collection Example");
111+
}
112+
113+
/*@Override
114+
public void onBackPressed() {
115+
if (!ecPagerView.collapse())
116+
super.onBackPressed();
117+
}*/
118+
119+
}

0 commit comments

Comments
 (0)