This repository has been archived by the owner on Oct 28, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 30
/
MultiRecyclerViewCustomBuilderActivity.java
78 lines (68 loc) · 2.94 KB
/
MultiRecyclerViewCustomBuilderActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package io.nlopez.smartadapters.sample;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import java.util.List;
import butterknife.ButterKnife;
import butterknife.InjectView;
import io.nlopez.smartadapters.SmartAdapter;
import io.nlopez.smartadapters.builders.DefaultBindableLayoutBuilder;
import io.nlopez.smartadapters.sample.model.Place;
import io.nlopez.smartadapters.sample.model.User;
import io.nlopez.smartadapters.sample.util.DataGenerator;
import io.nlopez.smartadapters.sample.view.PlaceAltView;
import io.nlopez.smartadapters.sample.view.PlaceView;
import io.nlopez.smartadapters.sample.view.UserAltView;
import io.nlopez.smartadapters.sample.view.UserView;
import io.nlopez.smartadapters.utils.Mapper;
import io.nlopez.smartadapters.views.BindableLayout;
public class MultiRecyclerViewCustomBuilderActivity extends Activity {
@InjectView(R.id.recycler_view)
RecyclerView recyclerView;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_recyclerview);
ButterKnife.inject(this);
initView();
}
private void initView() {
List mixedList = DataGenerator.generateMix(100);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
SmartAdapter.items(mixedList)
.map(User.class, UserView.class)
.map(User.class, UserAltView.class)
.map(Place.class, PlaceView.class)
.map(Place.class, PlaceAltView.class)
.builder(new DefaultBindableLayoutBuilder() {
@Override
public Class<? extends BindableLayout> viewType(
@NonNull Object item, int position, @NonNull Mapper mapper) {
if (item instanceof User) {
User user = (User) item;
if (user.getFirstName().length() % 2 == 1) {
return UserView.class;
} else {
return UserAltView.class;
}
} else if (item instanceof Place) {
Place place = (Place) item;
if (place.getName().length() % 2 == 1) {
return PlaceView.class;
} else {
return PlaceAltView.class;
}
} else {
return super.viewType(item, position, mapper);
}
}
@Override
public boolean allowsMultimapping() {
return true;
}
})
.into(recyclerView);
}
}