/
PowerfulStickyRecyclerViewActivity.java
executable file
·155 lines (136 loc) · 5.54 KB
/
PowerfulStickyRecyclerViewActivity.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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package com.gavin.com.stickydecoration.view;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.gavin.com.library.PowerfulStickyDecoration;
import com.gavin.com.library.listener.OnGroupClickListener;
import com.gavin.com.library.listener.PowerGroupListener;
import com.gavin.com.stickydecoration.R;
import com.gavin.com.stickydecoration.model.City;
import com.gavin.com.stickydecoration.util.CityUtil;
import com.gavin.com.stickydecoration.util.DensityUtil;
import java.util.ArrayList;
import java.util.List;
/**
* 自定义View悬浮
*/
public class PowerfulStickyRecyclerViewActivity extends AppCompatActivity {
RecyclerView mRv;
RecyclerView.Adapter mAdapter;
List<City> dataList = new ArrayList<>();
PowerfulStickyDecoration decoration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sticky_recycler_view);
initView();
}
private void initView() {
mRv = findViewById(R.id.rv);
//模拟数据
dataList.addAll(CityUtil.getCityList());
dataList.addAll(CityUtil.getCityList());
//------------- PowerfulStickyDecoration 使用部分 ----------------
PowerGroupListener listener = new PowerGroupListener() {
@Override
public String getGroupName(int position) {
//获取组名,用于判断是否是同一组
if (dataList.size() > position) {
return dataList.get(position).getProvince();
}
return null;
}
@Override
public View getGroupView(int position) {
//获取自定定义的组View
if (dataList.size() > position) {
View view = getLayoutInflater().inflate(R.layout.item_group, null, false);
((TextView) view.findViewById(R.id.tv)).setText(dataList.get(position).getProvince());
return view;
} else {
return null;
}
}
};
decoration = PowerfulStickyDecoration.Builder
.init(listener)
.setGroupHeight(DensityUtil.dip2px(this, 40))
.setGroupBackground(Color.parseColor("#48BDFF"))
.setDivideColor(Color.parseColor("#27ad9a"))
.setDivideHeight(DensityUtil.dip2px(this, 1))
.setCacheEnable(true)
.setHeaderCount(3)
.setOnClickListener(new OnGroupClickListener() {
@Override
public void onClick(int position, int id) { //Group点击事件
String content = "onGroupClick --> " + dataList.get(position).getProvince() + " id --> " + id;
showToast(content);
}
})
.build();
//------------- ----------------
//下面是平时的RecyclerView操作
RecyclerView.LayoutManager manager;
String type = getIntent().getStringExtra("type");
if (TextUtils.equals(type, "grid")) {
manager = new GridLayoutManager(this, 3);
decoration.resetSpan(mRv, (GridLayoutManager) manager);
} else {
manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
}
mRv.setLayoutManager(manager);
mRv.addItemDecoration(decoration);
mAdapter = new RecyclerView.Adapter() {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler_view, parent, false);
return new Holder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {
Holder holder = (Holder) viewHolder;
holder.mTextView.setText(dataList.get(position).getName());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showToast("Item click " + position);
}
});
}
@Override
public int getItemCount() {
return dataList.size();
}
};
mRv.setAdapter(mAdapter);
}
static class Holder extends RecyclerView.ViewHolder {
TextView mTextView;
public Holder(View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.tv);
}
}
public void onRefresh(View v) {
dataList.clear();
dataList.addAll(CityUtil.getRandomCityList());
mAdapter.notifyDataSetChanged();
decoration.clearCache();
}
private void showToast(String content) {
Toast.makeText(PowerfulStickyRecyclerViewActivity.this, content, Toast.LENGTH_LONG).show();
}
private void l(String str) {
Log.i("TAG", str);
}
}