这是我参与「第四届青训营 」笔记创作活动的第2天
RecyclerView的四个重要组件,
LayoutManager:管理视图渲染、包含视图复用回收功能。
Adapter:适配器
ItemDecoration:实现列表分割功能
ItemAnimator:用来制作item的动画
Adapter适配器
该适配器的使用主要通过继承Adapter类来实现。该类中包含CreateViewHolder、onBindeViewHolder、getItemCount方法,在继承该类后必须实现这三种方法。
- CreateViewHolder:创建ViewHolder,无需调用findViewById()方法就可以访问视图,可以提高性能。
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item ,parent ,false);
MyViewHolder myViewHolder = new MyViewHolder(itemView);
return myViewHolder;
}
- onBindeViewHolder:把数据绑定、填充到相应的item view中。
public void onBindViewHolder(@NonNull MyViewHolder holder, int position){
Pre1 pre1= personList.get(position);
holder.name.setText(pre1.getName());
holder.address.setText(pre1.getAddress());
Glide.with(context).load(pre1.getPoster()).into(holder.imageView);
}
- getItemCount:返回数据的数量
public int getItemCount() {
return personList.size();
}
xml布局
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview2"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="16dp" />
##Activity中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = findViewById(R.id.recyclerview);
// 构造一些数据
for (int i = 0; i < 50; i++) {
News news = new News();
news.title = "标题" + i;
news.content = "内容" + i;
mNewsList.add(news);
}
mMyAdapter = new MyAdapter();
mRecyclerView.setAdapter(mMyAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
mRecyclerView.setLayoutManager(layoutManager);
}
LinearLayout
LinearLayout又称作线性布局,是一种非常常用的布局。正如它的名字所描述的一样,这个布局会将它所包含的控件在线性方向上依次排列。
LinearLayout常用属性
- orientation:布局中组件的排列方式,有horizontal,vertical两种方式
- gravity:控制组件多包涵的子元素的对齐方式
- layout——gravity:控制该组件在父容器里面的对其方式
- layout——width:布局的宽度,通常不直接写数字,用wrap——content,fill_parent或者margin——parent
- layout_height:布局的高度
- id:为组件设置一个资源id,在java文件中可以用findViewById()找到
- background:为该组件设置一个背景图片
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>