前言
RecyclerView的核心功能,并不是由自己来完成的,而是转交给LayoutManager来完成的
LayoutManager负责的功能有:布局管理,滑动管理,缓存管理
自定义流式布局管理器 - FlowLayoutManager
这里,我们自定义了一个流式布局管理器,来演示LayoutManager是如何工作的
代码比较简单,对标准流程做了简化了,主要是为了演示,在性能和和细节上并不够好
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
FlowLayoutManager layoutManager = new FlowLayoutManager();
recyclerView.setLayoutManager(layoutManager);
Adapter adapter = new Adapter();
recyclerView.setAdapter(adapter);
}
}
public class Adapter extends RecyclerView.Adapter {
String[] datas = new String[300];
public Adapter() {
initData();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view_pager, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.btn.setText(datas[position]);
}
@Override
public int getItemCount() {
return datas.length;
}
public class ViewHolder extends RecyclerView.ViewHolder {
Button btn;
public ViewHolder(View itemView) {
super(itemView);
btn = itemView.findViewById(R.id.btn);
}
}
protected void initData() {
String[] randoms = new String[]{"X", "XXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXX", "XXXXXXXXXXXXX"};
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?