第一步,导入依赖
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.gavin.com.library:stickyDecoration:1.1.0'
第二步,
<android.support.v7.widget.RecyclerView
android:id="@+id/recy"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
第三步,自定义的bean类
public class City {
private String name;
private String province;
private int icon;
public City(String name, String province, int icon) {
this.name = name;
this.province = province;
this.icon = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
}
第四步 自己构造的数据
public class CityUtils {
public static List<City> getCityList(){
List<City> dataList = new ArrayList<>();
String FUJIAN="福建省";
int FUJIAN_ICON=1;
dataList.add(new City("福州",FUJIAN,FUJIAN_ICON));
dataList.add(new City("厦门",FUJIAN,FUJIAN_ICON));
dataList.add(new City("泉州",FUJIAN,FUJIAN_ICON));
dataList.add(new City("宁德",FUJIAN,FUJIAN_ICON));
dataList.add(new City("漳州",FUJIAN,FUJIAN_ICON));
String ANHUI="安徽省";
int ANHUI_ICON=2;
dataList.add(new City("合肥",ANHUI,ANHUI_ICON));
dataList.add(new City("芜湖",ANHUI,ANHUI_ICON));
dataList.add(new City("蚌埠",ANHUI,ANHUI_ICON));
dataList.add(new City("铜陵",ANHUI,ANHUI_ICON));
dataList.add(new City("宿州",ANHUI,ANHUI_ICON));
dataList.add(new City("淮北",ANHUI,ANHUI_ICON));
dataList.add(new City("六安",ANHUI,ANHUI_ICON));
dataList.add(new City("黄山",ANHUI,ANHUI_ICON));
dataList.add(new City("阜阳",ANHUI,ANHUI_ICON));
String ZHEJIANG="浙江省";
int ZHEJIANG_ICON=3;
dataList.add(new City("杭州",ZHEJIANG,ZHEJIANG_ICON));
dataList.add(new City("宁波",ZHEJIANG,ZHEJIANG_ICON));
dataList.add(new City("温州",ZHEJIANG,ZHEJIANG_ICON));
dataList.add(new City("嘉兴",ZHEJIANG,ZHEJIANG_ICON));
dataList.add(new City("绍兴",ZHEJIANG,ZHEJIANG_ICON));
dataList.add(new City("金华",ZHEJIANG,ZHEJIANG_ICON));
dataList.add(new City("湖州",ZHEJIANG,ZHEJIANG_ICON));
dataList.add(new City("舟山",ZHEJIANG,ZHEJIANG_ICON));
String JIANGSU="江苏省";
int JIANGSU_ICON=4;
dataList.add(new City("南京",JIANGSU,JIANGSU_ICON));
dataList.add(new City("苏州",JIANGSU,JIANGSU_ICON));
dataList.add(new City("徐州",JIANGSU,JIANGSU_ICON));
dataList.add(new City("南通",JIANGSU,JIANGSU_ICON));
dataList.add(new City("无锡",JIANGSU,JIANGSU_ICON));
dataList.add(new City("盐城",JIANGSU,JIANGSU_ICON));
dataList.add(new City("淮安",JIANGSU,JIANGSU_ICON));
dataList.add(new City("泰州",JIANGSU,JIANGSU_ICON));
dataList.add(new City("常州",JIANGSU,JIANGSU_ICON));
dataList.add(new City("连云港",JIANGSU,JIANGSU_ICON));
String SHANDONG="山东省";
int SHANDONG_ICON=5;
dataList.add(new City("济南",SHANDONG,SHANDONG_ICON));
dataList.add(new City("德州",SHANDONG,SHANDONG_ICON));
dataList.add(new City("青岛",SHANDONG,SHANDONG_ICON));
dataList.add(new City("莱芜",SHANDONG,SHANDONG_ICON));
dataList.add(new City("滨州",SHANDONG,SHANDONG_ICON));
dataList.add(new City("东营",SHANDONG,SHANDONG_ICON));
dataList.add(new City("泰安",SHANDONG,SHANDONG_ICON));
dataList.add(new City("曲阜",SHANDONG,SHANDONG_ICON));
dataList.add(new City("潍坊",SHANDONG,SHANDONG_ICON));
dataList.add(new City("日照",SHANDONG,SHANDONG_ICON));
dataList.add(new City("菏泽",SHANDONG,SHANDONG_ICON));
dataList.add(new City("枣庄",SHANDONG,SHANDONG_ICON));
dataList.add(new City("聊城",SHANDONG,SHANDONG_ICON));
dataList.add(new City("淄博",SHANDONG,SHANDONG_ICON));
String SHANXI="山西省";
int SHANXI_ICON=4;
dataList.add(new City("太原",SHANXI,SHANXI_ICON));
dataList.add(new City("大同",SHANXI,SHANXI_ICON));
dataList.add(new City("运城",SHANXI,SHANXI_ICON));
dataList.add(new City("侯马",SHANXI,SHANXI_ICON));
dataList.add(new City("长治",SHANXI,SHANXI_ICON));
dataList.add(new City("吕梁",SHANXI,SHANXI_ICON));
dataList.add(new City("永济",SHANXI,SHANXI_ICON));
dataList.add(new City("临汾",SHANXI,SHANXI_ICON));
dataList.add(new City("晋城",SHANXI,SHANXI_ICON));
dataList.add(new City("忻州",SHANXI,SHANXI_ICON));
return dataList;
};
}
第五步,MainActivity
public class MainActivity extends AppCompatActivity {
private RecyclerView recy;
private List<City> dataList=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recy = findViewById(R.id.recy);
dataList.addAll(CityUtils.getCityList());
LinearLayoutManager manager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
recy.setLayoutManager(manager);
StickyDecoration decoration = StickyDecoration.Builder
.init(new GroupListener() {
@Override
public String getGroupName(int position) {
//组名回调
if (dataList.size() > position) {
//获取城市对应的省份
return dataList.get(position).getProvince();
}
return null;
}
})
.setGroupBackground(Color.parseColor("#48BDFF")) //背景色
.setDivideColor(Color.parseColor("#CCCCCC")) //分割线颜色
.setGroupTextColor(Color.WHITE) // 边距 靠左时为左边距 靠右时为右边距
.isAlignLeft(false) //靠右显示 (默认靠左)
.build();
recy.addItemDecoration(decoration);
MyAdapter adapter=new MyAdapter(MainActivity.this,dataList);
recy.setAdapter(adapter);
}
}
第六步 适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private List<City> dataList;
public MyAdapter(Context context, List<City> dataList) {
this.context = context;
this.dataList = dataList;
}
@NonNull
@Override
public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=View.inflate(context,R.layout.mytem,null);
ViewHolder holder=new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyAdapter.ViewHolder viewHolder, int i) {
viewHolder.tv.setText(dataList.get(i).getName());
}
@Override
public int getItemCount() {
return dataList.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
private final TextView tv;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tv = itemView.findViewById(R.id.tv);
}
}
}