RecyclerView与LinearLayout | 青训营笔记

103 阅读1分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

RecyclerView的四个重要组件,

LayoutManager:管理视图渲染、包含视图复用回收功能。

Adapter:适配器

ItemDecoration:实现列表分割功能

ItemAnimator:用来制作item的动画

Adapter适配器

该适配器的使用主要通过继承Adapter类来实现。该类中包含CreateViewHolder、onBindeViewHolder、getItemCount方法,在继承该类后必须实现这三种方法。

  1. 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;
}
  1. 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);
}
  1. 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常用属性

  1. orientation:布局中组件的排列方式,有horizontal,vertical两种方式
  2. gravity:控制组件多包涵的子元素的对齐方式
  3. layout——gravity:控制该组件在父容器里面的对其方式
  4. layout——width:布局的宽度,通常不直接写数字,用wrap——content,fill_parent或者margin——parent
  5. layout_height:布局的高度
  6. id:为组件设置一个资源id,在java文件中可以用findViewById()找到
  7. background:为该组件设置一个背景图片
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
</LinearLayout>