Skip to content

Commit

Permalink
Merge branch 'release/v0.9.8'
Browse files Browse the repository at this point in the history
  • Loading branch information
mikepenz committed Jan 26, 2016
2 parents 77afc69 + 8b2c31d commit 1203844
Show file tree
Hide file tree
Showing 14 changed files with 372 additions and 54 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ You can try it out here [Google Play](https://play.google.com/store/apps/details
#Include in your project
##Using Maven
```javascript
compile('com.mikepenz:fastadapter:0.9.7@aar') {
compile('com.mikepenz:fastadapter:0.9.8@aar') {
transitive = true
}
```
Expand Down
5 changes: 2 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ android {
defaultConfig {
minSdkVersion 11
targetSdkVersion 23
versionCode 97
versionName '0.9.7'
versionCode 98
versionName '0.9.8'

applicationVariants.all { variant ->
variant.outputs.each { output ->
Expand All @@ -25,7 +25,6 @@ android {
}
buildTypes {
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-DEBUG"
try {
signingConfig signingConfigs.debug
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.view.LayoutInflaterCompat;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
import android.support.v7.widget.DefaultItemAnimator;
Expand All @@ -15,19 +17,23 @@

import com.mikepenz.fastadapter.FastAdapter;
import com.mikepenz.fastadapter.IAdapter;
import com.mikepenz.fastadapter.IExpandable;
import com.mikepenz.fastadapter.IItem;
import com.mikepenz.fastadapter.adapters.HeaderAdapter;
import com.mikepenz.fastadapter.adapters.ItemAdapter;
import com.mikepenz.fastadapter.app.adapter.StickyHeaderAdapter;
import com.mikepenz.fastadapter.app.items.ExpandableItem;
import com.mikepenz.fastadapter.app.items.SampleItem;
import com.mikepenz.fastadapter.helpers.ActionModeHelper;
import com.mikepenz.iconics.context.IconicsLayoutInflater;
import com.mikepenz.materialize.MaterializeBuilder;
import com.mikepenz.materialize.util.UIUtils;
import com.timehop.stickyheadersrecyclerview.StickyRecyclerHeadersDecoration;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

/**
* This sample showcases compatibility the awesome Sticky-Headers library by timehop
Expand All @@ -38,11 +44,16 @@ public class AdvancedSampleActivity extends AppCompatActivity {

//save our FastAdapter
private FastAdapter mFastAdapter;
private HeaderAdapter mHeaderAdapter;
private ItemAdapter mItemAdapter;

private ActionModeHelper mActionModeHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
//as we use an icon from Android-Iconics via xml we add the IconicsLayoutInflater
//https://github.com/mikepenz/Android-Iconics
LayoutInflaterCompat.setFactory(getLayoutInflater(), new IconicsLayoutInflater(getDelegate()));
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);

Expand All @@ -65,8 +76,8 @@ protected void onCreate(Bundle savedInstanceState) {

//create our adapters
final StickyHeaderAdapter stickyHeaderAdapter = new StickyHeaderAdapter();
ItemAdapter itemAdapter = new ItemAdapter();
final HeaderAdapter headerAdapter = new HeaderAdapter();
mItemAdapter = new ItemAdapter();
mHeaderAdapter = new HeaderAdapter();

//configure our mFastAdapter
//as we provide id's for the items we want the hasStableIds enabled to speed up things
Expand All @@ -78,6 +89,15 @@ protected void onCreate(Bundle savedInstanceState) {
public boolean onClick(View v, IAdapter adapter, IItem item, int position) {
//we handle the default onClick behavior for the actionMode. This will return null if it didn't do anything and you can handle a normal onClick
Boolean res = mActionModeHelper.onClick(item, position);

if (res != null && res) {
if (((IExpandable) item).isExpanded()) {
ViewCompat.animate(v.findViewById(R.id.material_drawer_icon)).rotation(0).start();
} else {
ViewCompat.animate(v.findViewById(R.id.material_drawer_icon)).rotation(90).start();
}
}

return res != null ? res : false;
}
});
Expand All @@ -101,35 +121,11 @@ public boolean onLongClick(View v, IAdapter adapter, IItem item, int position) {
RecyclerView rv = (RecyclerView) findViewById(R.id.rv);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setItemAnimator(new DefaultItemAnimator());
rv.setAdapter(stickyHeaderAdapter.wrap(itemAdapter.wrap(headerAdapter.wrap(mFastAdapter))));
rv.setAdapter(stickyHeaderAdapter.wrap(mItemAdapter.wrap(mHeaderAdapter.wrap(mFastAdapter))));

final StickyRecyclerHeadersDecoration decoration = new StickyRecyclerHeadersDecoration(stickyHeaderAdapter);
rv.addItemDecoration(decoration);

//fill with some sample data
headerAdapter.add(new SampleItem().withName("Header").withSelectable(false).withIdentifier(1));
List<IItem> items = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
SampleItem sampleItem = new SampleItem().withName("Test " + i).withHeader(headers[i / 5]).withIdentifier(100 + i);

if (i % 10 == 0) {
List<IItem> subItems = new LinkedList<>();
for (int ii = 1; ii <= 3; ii++) {
SampleItem subItem = new SampleItem().withName("-- SubTest " + ii).withHeader(headers[i / 5]).withIdentifier(1000 + ii);

List<IItem> subSubItems = new LinkedList<>();
for (int iii = 1; iii <= 3; iii++) {
subSubItems.add(new SampleItem().withName("---- SubSubTest " + iii).withHeader(headers[i / 5]).withIdentifier(10000 + iii));
}
subItem.withSubItems(subSubItems);

subItems.add(subItem);
}
sampleItem.withSubItems(subItems);
}
items.add(sampleItem);
}
itemAdapter.add(items);

//so the headers are aware of changes
stickyHeaderAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
Expand All @@ -148,6 +144,38 @@ public void onChanged() {
//set the back arrow in the toolbar
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(false);

setItems();
}

private void setItems() {
mHeaderAdapter.add(new SampleItem().withName("Header").withSelectable(false).withIdentifier(1));
//fill with some sample data
List<IItem> items = new ArrayList<>();
int size = new Random().nextInt(25) + 10;
for (int i = 1; i <= size; i++) {

if (i % 6 == 0) {
ExpandableItem expandableItem = new ExpandableItem().withName("Test " + i).withHeader(headers[i / 5]);
List<IItem> subItems = new LinkedList<>();
for (int ii = 1; ii <= 3; ii++) {
ExpandableItem subItem = new ExpandableItem().withName("-- SubTest " + ii).withHeader(headers[i / 5]).withIdentifier(1000 + ii);

List<IItem> subSubItems = new LinkedList<>();
for (int iii = 1; iii <= 3; iii++) {
subSubItems.add(new SampleItem().withName("---- SubSubTest " + iii).withHeader(headers[i / 5]).withIdentifier(10000 + iii));
}
subItem.withSubItems(subSubItems);

subItems.add(subItem);
}
expandableItem.withSubItems(subItems);
items.add(expandableItem);
} else {
items.add(new SampleItem().withName("Test " + i).withHeader(headers[i / 5]));
}
}
mItemAdapter.set(items);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.mikepenz.fastadapter.app;

import android.os.Bundle;
import android.support.v4.view.LayoutInflaterCompat;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
Expand All @@ -10,9 +12,12 @@

import com.mikepenz.fastadapter.FastAdapter;
import com.mikepenz.fastadapter.IAdapter;
import com.mikepenz.fastadapter.IExpandable;
import com.mikepenz.fastadapter.IItem;
import com.mikepenz.fastadapter.adapters.FastItemAdapter;
import com.mikepenz.fastadapter.app.items.ExpandableItem;
import com.mikepenz.fastadapter.app.items.SampleItem;
import com.mikepenz.iconics.context.IconicsLayoutInflater;
import com.mikepenz.itemanimators.SlideDownAlphaAnimator;
import com.mikepenz.materialize.MaterializeBuilder;

Expand All @@ -26,6 +31,9 @@ public class CollapsibleSampleActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
//as we use an icon from Android-Iconics via xml we add the IconicsLayoutInflater
//https://github.com/mikepenz/Android-Iconics
LayoutInflaterCompat.setFactory(getLayoutInflater(), new IconicsLayoutInflater(getDelegate()));
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);

Expand All @@ -47,8 +55,14 @@ protected void onCreate(Bundle savedInstanceState) {
fastItemAdapter.withOnPreClickListener(new FastAdapter.OnClickListener() {
@Override
public boolean onClick(View v, IAdapter adapter, IItem item, int position) {
if (item instanceof SampleItem) {
if (((SampleItem) item).getSubItems() != null) {
if (item instanceof ExpandableItem) {
if (((ExpandableItem) item).getSubItems() != null) {
if (((IExpandable) item).isExpanded()) {
ViewCompat.animate(v.findViewById(R.id.material_drawer_icon)).rotation(90).start();
} else {
ViewCompat.animate(v.findViewById(R.id.material_drawer_icon)).rotation(0).start();
}

fastItemAdapter.toggleExpandable(position);
return true;
}
Expand All @@ -64,19 +78,22 @@ public boolean onClick(View v, IAdapter adapter, IItem item, int position) {
rv.setAdapter(fastItemAdapter);

//fill with some sample data
List<SampleItem> items = new ArrayList<>();
List<IItem> items = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
SampleItem sampleItem = new SampleItem().withName("Test " + i + (i % 10 == 0 ? " (Collapsible)" : "")).withIdentifier(100 + i);

//add subitems so we can showcase the collapsible functionality
if (i % 10 == 0) {
ExpandableItem expandableItem = new ExpandableItem().withName("Test " + i).withIdentifier(100 + 1);

//add subitems so we can showcase the collapsible functionality
List<IItem> subItems = new LinkedList<>();
for (int ii = 1; ii <= 5; ii++) {
subItems.add(new SampleItem().withName("-- Test " + ii).withIdentifier(1000 + ii));
}
sampleItem.withSubItems(subItems);
expandableItem.withSubItems(subItems);

items.add(expandableItem);
} else {
items.add(new SampleItem().withName("Test " + i).withIdentifier(100 + i));
}
items.add(sampleItem);
}
fastItemAdapter.add(items);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.mikepenz.fastadapter.app;

import android.os.Bundle;
import android.support.v4.view.LayoutInflaterCompat;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
Expand All @@ -13,9 +15,10 @@
import com.mikepenz.fastadapter.IExpandable;
import com.mikepenz.fastadapter.IItem;
import com.mikepenz.fastadapter.adapters.FastItemAdapter;
import com.mikepenz.fastadapter.app.items.ExpandableItem;
import com.mikepenz.fastadapter.app.items.IconItem;
import com.mikepenz.fastadapter.app.items.SampleItem;
import com.mikepenz.iconics.Iconics;
import com.mikepenz.iconics.context.IconicsLayoutInflater;
import com.mikepenz.iconics.typeface.ITypeface;
import com.mikepenz.itemanimators.SlideDownAlphaAnimator;
import com.mikepenz.materialize.MaterializeBuilder;
Expand All @@ -31,6 +34,10 @@ public class IconGridActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
//as we use an icon from Android-Iconics via xml we add the IconicsLayoutInflater
//https://github.com/mikepenz/Android-Iconics
LayoutInflaterCompat.setFactory(getLayoutInflater(), new IconicsLayoutInflater(getDelegate()));

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);

Expand All @@ -51,6 +58,12 @@ protected void onCreate(Bundle savedInstanceState) {
@Override
public boolean onClick(View v, IAdapter<IItem> adapter, IItem item, int position) {
if (item instanceof IExpandable && ((IExpandable) item).getSubItems() != null) {
if (((IExpandable) item).isExpanded()) {
ViewCompat.animate(v.findViewById(R.id.material_drawer_icon)).rotation(90).start();
} else {
ViewCompat.animate(v.findViewById(R.id.material_drawer_icon)).rotation(0).start();
}

fastItemAdapter.toggleExpandable(position);
return true;
}
Expand All @@ -67,7 +80,7 @@ public boolean onClick(View v, IAdapter<IItem> adapter, IItem item, int position
@Override
public int getSpanSize(int position) {
switch (fastItemAdapter.getItemViewType(position)) {
case R.id.fastadapter_sample_item_id:
case R.id.fastadapter_expandable_item_id:
return 3;
case R.id.fastadapter_icon_item_id:
return 1;
Expand All @@ -91,17 +104,17 @@ public int compare(final ITypeface object1, final ITypeface object2) {
});

//add all icons of all registered Fonts to the list
ArrayList<SampleItem> items = new ArrayList<>(Iconics.getRegisteredFonts(this).size());
ArrayList<ExpandableItem> items = new ArrayList<>(Iconics.getRegisteredFonts(this).size());
for (ITypeface font : mFonts) {
SampleItem sampleItem = new SampleItem().withName(font.getFontName());
ExpandableItem expandableItem = new ExpandableItem().withName(font.getFontName());

ArrayList<IItem> icons = new ArrayList<>();
for (String icon : font.getIcons()) {
icons.add(new IconItem().withIcon(font.getIcon(icon)).withSelectable(false));
}
sampleItem.withSubItems(icons);
expandableItem.withSubItems(icons);

items.add(sampleItem);
items.add(expandableItem);
}

//fill with some sample data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.mikepenz.fastadapter.AbstractAdapter;
import com.mikepenz.fastadapter.IItem;
import com.mikepenz.fastadapter.app.R;
import com.mikepenz.fastadapter.app.items.ExpandableItem;
import com.mikepenz.fastadapter.app.items.SampleItem;
import com.timehop.stickyheadersrecyclerview.StickyRecyclerHeadersAdapter;

Expand All @@ -29,6 +30,8 @@ public long getHeaderId(int position) {
//in our sample we want a separate header per first letter of our items
if (item instanceof SampleItem && ((SampleItem) item).header != null) {
return ((SampleItem) item).header.charAt(0);
} else if (item instanceof ExpandableItem && ((ExpandableItem) item).header != null) {
return ((ExpandableItem) item).header.charAt(0);
}
return -1;
}
Expand All @@ -49,6 +52,9 @@ public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder, int position)
if (item instanceof SampleItem && ((SampleItem) item).header != null) {
//based on the position we set the headers text
textView.setText(String.valueOf(((SampleItem) item).header.charAt(0)));
} else if (item instanceof ExpandableItem && ((ExpandableItem) item).header != null) {
//based on the position we set the headers text
textView.setText(String.valueOf(((ExpandableItem) item).header.charAt(0)));
}
holder.itemView.setBackgroundColor(getRandomColor());
}
Expand Down
Loading

0 comments on commit 1203844

Please sign in to comment.