/
MainActivity.java
92 lines (80 loc) · 3.1 KB
/
MainActivity.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package tellh.com.recyclerstickyheaderview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
import tellh.com.stickyheaderview_rv.adapter.DataBean;
import tellh.com.stickyheaderview_rv.adapter.StickyHeaderViewAdapter;
public class MainActivity extends AppCompatActivity {
private RecyclerView rv;
private StickyHeaderViewAdapter adapter;
private Random random = new Random(System.currentTimeMillis());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initData() {
Gson gson = new Gson();
Result result = gson.fromJson(User.dataSource, Result.class);
List<User> userList = result.getItems();
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.getLogin().compareToIgnoreCase(o2.getLogin());
}
});
List<DataBean> userListBak = new ArrayList<>();
String currentPrefix = userList.get(0).getLogin().substring(0, 1).toUpperCase();
userListBak.add(new ItemHeader(currentPrefix));
for (User user : userList) {
if (currentPrefix.compareToIgnoreCase(user.getLogin().substring(0, 1)) == 0)
userListBak.add(user);
else {
currentPrefix = user.getLogin().substring(0, 1).toUpperCase();
userListBak.add(new ItemHeader(currentPrefix));
userListBak.add(user);
}
}
adapter = new StickyHeaderViewAdapter(userListBak)
.RegisterItemType(new UserItemViewBinder())
.RegisterItemType(new ItemHeaderViewBinder());
rv.setAdapter(adapter);
}
private void initView() {
rv = (RecyclerView) findViewById(R.id.recyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
rv.setLayoutManager(linearLayoutManager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_view:
User user = new User("Sticky View", 123, "https://avatars.githubusercontent.com/u/15800681?v=3");
user.setShouldSticky(random.nextBoolean());
adapter.append(user);
break;
case R.id.action_clear_all:
adapter.clear(rv);
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}