Skip to content

Commit d466345

Browse files
committed
Add: multi view type
1 parent 53faea1 commit d466345

File tree

7 files changed

+100
-40
lines changed

7 files changed

+100
-40
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
</activity>
3030
<activity android:name=".activity.DataFilterActivity">
3131
</activity>
32+
<activity android:name=".activity.MultiItemActivity">
33+
</activity>
3234
</application>
3335

3436
</manifest>

app/src/main/java/com/cncoderx/test/recyclerviewhelper/activity/MainActivity.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ protected void onCreate(Bundle savedInstanceState) {
2121
"Load More Data",
2222
"Expandable Item",
2323
"Swipe Layout",
24-
"Data Filter"
24+
"Data Filter",
25+
"Multiple View Type"
2526
}));
2627
}
2728

@@ -46,6 +47,9 @@ protected void onListItemClick(ListView l, View v, int position, long id) {
4647
case 5:
4748
startActivity(new Intent(this, DataFilterActivity.class));
4849
break;
50+
case 6:
51+
startActivity(new Intent(this, MultiItemActivity.class));
52+
break;
4953
default:
5054
break;
5155
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.cncoderx.test.recyclerviewhelper.activity;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.widget.RecyclerView;
5+
6+
import com.cncoderx.recyclerviewhelper.RecyclerViewHelper;
7+
import com.cncoderx.test.recyclerviewhelper.adapter.MultiAlbumAdapter;
8+
import com.cncoderx.test.recyclerviewhelper.data.AlbumManager;
9+
10+
public class MultiItemActivity extends RecyclerViewActivity {
11+
12+
@Override
13+
protected void onCreate(Bundle savedInstanceState) {
14+
super.onCreate(savedInstanceState);
15+
RecyclerView.Adapter adapter = new MultiAlbumAdapter(AlbumManager.obtainAlbumList());
16+
RecyclerViewHelper.setAdapter(mRecyclerView, adapter);
17+
}
18+
}
Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
package com.cncoderx.test.recyclerviewhelper.activity;
22

3-
import android.app.AlertDialog;
4-
import android.content.DialogInterface;
5-
import android.view.Menu;
6-
import android.view.MenuItem;
7-
import android.widget.EditText;
8-
93
import com.cncoderx.recyclerviewhelper.RecyclerViewHelper;
104
import com.cncoderx.test.recyclerviewhelper.R;
115
import com.cncoderx.test.recyclerviewhelper.adapter.AlbumSwipeAdapter;
@@ -36,33 +30,4 @@ protected void onLayoutManagerChanged(Layout layout) {
3630
adapter.setMode(Attributes.Mode.Multiple);
3731
RecyclerViewHelper.setAdapter(mRecyclerView, adapter);
3832
}
39-
40-
@Override
41-
public boolean onCreateOptionsMenu(Menu menu) {
42-
super.onCreateOptionsMenu(menu);
43-
menu.findItem(R.id.action_search).setVisible(true);
44-
return true;
45-
}
46-
47-
@Override
48-
public boolean onMenuItemSelected(int featureId, MenuItem item) {
49-
super.onMenuItemSelected(featureId, item);
50-
if (item.getItemId() == R.id.action_search) {
51-
final EditText editText = new EditText(this);
52-
editText.setSingleLine();
53-
new AlertDialog.Builder(this)
54-
.setCancelable(false)
55-
.setTitle(android.R.string.search_go)
56-
.setView(editText)
57-
.setNegativeButton(android.R.string.cancel, null)
58-
.setPositiveButton(android.R.string.search_go, new DialogInterface.OnClickListener() {
59-
@Override
60-
public void onClick(DialogInterface dialog, int which) {
61-
String mSearchKey = editText.getText().toString();
62-
RecyclerViewHelper.setFilterText(mRecyclerView, mSearchKey);
63-
}
64-
}).show();
65-
}
66-
return true;
67-
}
6833
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.cncoderx.test.recyclerviewhelper.adapter;
2+
3+
import com.cncoderx.test.recyclerviewhelper.R;
4+
import com.cncoderx.test.recyclerviewhelper.data.Album;
5+
6+
import java.util.Collection;
7+
8+
public class MultiAlbumAdapter extends AlbumAdapter {
9+
public static final int LINEAR_LAYOUT_VIEW_TYPE = 0;
10+
public static final int GRID_LAYOUT_VIEW_TYPE = 1;
11+
public static final int STAGGERED_LAYOUT_VIEW_TYPE = 2;
12+
13+
public MultiAlbumAdapter() {
14+
super(0);
15+
}
16+
17+
public MultiAlbumAdapter(Album... data) {
18+
super(0, data);
19+
}
20+
21+
public MultiAlbumAdapter(Collection<? extends Album> data) {
22+
super(0, data);
23+
}
24+
25+
@Override
26+
protected int getLayoutResource(int viewType) {
27+
int layoutRes = super.getLayoutResource(viewType);
28+
switch (viewType) {
29+
case LINEAR_LAYOUT_VIEW_TYPE:
30+
layoutRes = R.layout.item_album_linear_layout;
31+
break;
32+
case GRID_LAYOUT_VIEW_TYPE:
33+
layoutRes = R.layout.item_album_grid_layout;
34+
break;
35+
case STAGGERED_LAYOUT_VIEW_TYPE:
36+
layoutRes = R.layout.item_album_staggered_layout;
37+
break;
38+
default:
39+
break;
40+
}
41+
return layoutRes;
42+
}
43+
44+
@Override
45+
public int getItemViewType(int position) {
46+
int viewType;
47+
switch (position % 3) {
48+
case 1:
49+
viewType = GRID_LAYOUT_VIEW_TYPE;
50+
break;
51+
case 2:
52+
viewType = STAGGERED_LAYOUT_VIEW_TYPE;
53+
break;
54+
case 0:
55+
default:
56+
viewType = LINEAR_LAYOUT_VIEW_TYPE;
57+
break;
58+
}
59+
return viewType;
60+
}
61+
}

library/src/main/java/com/cncoderx/recyclerviewhelper/adapter/BaseAdapter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cncoderx.recyclerviewhelper.adapter;
22

3+
import android.content.Context;
34
import android.support.annotation.IdRes;
45
import android.support.annotation.NonNull;
56
import android.support.v7.widget.RecyclerView;
@@ -31,6 +32,10 @@ public BaseViewHolder(View itemView) {
3132
super(itemView);
3233
}
3334

35+
public Context getContext() {
36+
return itemView.getContext();
37+
}
38+
3439
public @NonNull <T extends View> T getView(@IdRes int id) {
3540
View v = mIDArray.get(id);
3641
if (v == null) {

library/src/main/java/com/cncoderx/recyclerviewhelper/adapter/ObjectAdapter.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
/**
2020
* @author cncoderx
2121
*/
22-
public abstract class ObjectAdapter<T> extends BaseAdapter implements IArray<T>, IArray.Callback, Filterable {
22+
public abstract class ObjectAdapter<T> extends BaseAdapter
23+
implements IArray<T>, IArray.Callback, Filterable {
2324
private @LayoutRes int mResource;
2425
private Array<T> mArray = new Array<>();
2526
private Array<T> mOriginalArray;
@@ -34,7 +35,6 @@ public ObjectAdapter(@LayoutRes int resource) {
3435
mArray.setCallback(this);
3536
}
3637

37-
@SafeVarargs
3838
public ObjectAdapter(@LayoutRes int resource, @NonNull T... objects) {
3939
mResource = resource;
4040
mArray.addAll(Arrays.asList(objects));
@@ -49,7 +49,7 @@ public ObjectAdapter(@LayoutRes int resource, @NonNull Collection<? extends T> o
4949

5050
@Override
5151
protected View onCreateView(LayoutInflater inflater, ViewGroup parent, int viewType) {
52-
return inflater.inflate(mResource, parent, false);
52+
return inflater.inflate(getLayoutResource(viewType), parent, false);
5353
}
5454

5555
@Override
@@ -60,8 +60,13 @@ public void onBindViewHolder(BaseViewHolder holder, int position) {
6060

6161
public abstract void onBindViewHolder(BaseViewHolder holder, T object, int position);
6262

63+
@LayoutRes
64+
protected int getLayoutResource(int viewType) {
65+
return mResource;
66+
}
67+
6368
@Override
64-
public int getItemCount() {
69+
public final int getItemCount() {
6570
return size();
6671
}
6772

0 commit comments

Comments
 (0)