1、RecyclerView 导入方法

直接在build.gradle(Module)中添加依赖库

recycleview 添加item问题 recyclerview怎么添加_xml

implementation 'com.android.support:recyclerview-v7:31+'

跟上面的版本号一致

recycleview 添加item问题 recyclerview怎么添加_android_02

2、list view样式recycle view

完成后的样子

recycleview 添加item问题 recyclerview怎么添加_android_03

2 .1  在新建项目下新建package包, 命名为RecycleView

recycleview 添加item问题 recyclerview怎么添加_xml_04

在包中新建2个Activity. 命名为:RecycleViewActivity(放置按钮,查看不同的样式的列表)LinearRecycleViewActivity(线性垂直列表视图)

2.2 在activity_recycle_view下添加按钮,方便我们可以看到不同列表的视图

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RecycleView.RecycleViewActivity"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/blue"
        android:text="查看列表视图"
        android:textSize="18sp"
        android:layout_gravity="center_horizontal"/>

</LinearLayout>

RecycleViewActivity中获取控件,绑定监听器,点击按钮后实现页面跳转

//获取控件对象
        btn = findViewById(R.id.btn_view);

        //绑定监听器
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(RecycleViewActivity.this,LinearRecycleViewActivity.class);
                startActivity(intent);
            }
        });

线性垂直视图:activity_linear_recycle_view中添加RecycleView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RecycleView.LinearRecycleViewActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rl_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

 在MainActivity中没有布局,所以将默认的mainactivity换成 RecycleViewActivity

recycleview 添加item问题 recyclerview怎么添加_控件_05

点击按钮,完成页面跳转(状态栏的颜色在color里面修改就可以啦~)

recycleview 添加item问题 recyclerview怎么添加_android studio_06

recycleview 添加item问题 recyclerview怎么添加_android_07

2.3 新建一个Adapter,命名:LinearAdapter,继承 RecycleView.Adapter

recycleview 添加item问题 recyclerview怎么添加_android_08

Adapter有一个指定泛型,这个泛型继承自viewholder

2.4 创建LinearViewHolder继承自ViewHolder

recycleview 添加item问题 recyclerview怎么添加_控件_09

viewholder的作用是因为Android有个recycle反复循环器,viewholder借助他来循环利用itemview,我们只需要重新填充view的数据,不需要再次创建view并加载到内存里面,这样就可以复itemview而避免频繁创建view导致的内存消耗了。

2.5 将viewholder 传给Adapter,根据报错修改参数类型和返回值

recycleview 添加item问题 recyclerview怎么添加_android studio_10

2.6 新建布局文件,命名为:layout_linear_item(放置在recycle view中显示的控件)

添加图片/文字(看你心情) 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv_item"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:src="@drawable/layout_item"/>

</LinearLayout>

2.7 在LinearAdapter中创建构造函数,引用需要的布局文件

recycleview 添加item问题 recyclerview怎么添加_android_11

onCreateViewHolder中返回所需要的item文件

recycleview 添加item问题 recyclerview怎么添加_android studio_12

设置item显示的数量

recycleview 添加item问题 recyclerview怎么添加_android_13

在viewholder子类构造函数中,获取item控件对象

recycleview 添加item问题 recyclerview怎么添加_android_14

LinearAdapter完整代码:

所有的代码我都把包名给删除了,之后如果复制代码的伙伴别忘记添加自己的包名哈~

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.recycleapplication.R;

public class LinearAdapter extends RecyclerView.Adapter<LinearAdapter.LinearViewHolder> {

    //声明引用
    private Context mContext;
    private LayoutInflater mLayoutInflater;

    //创建构造函数
    public LinearAdapter(Context context){
        this.mContext = context;
        //通过LayoutInflater将控件的布局文件加载到当前类当中
        mLayoutInflater = LayoutInflater.from(context);
    }

    @NonNull
    @Override
    //返回一个viewholder
    public LinearViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return  new LinearViewHolder(mLayoutInflater.inflate(R.layout.layout_linear_item,
                parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull LinearViewHolder holder, int position) {

    }


    @Override
    public int getItemCount() {
        //返回的item数量
        return 20;
    }

    class LinearViewHolder extends RecyclerView.ViewHolder{

        private ImageView iv_item;

        public LinearViewHolder(@NonNull View itemView) {
            super(itemView);
            //获取控件对象
            iv_item = itemView.findViewById(R.id.iv_item);

        }
    }
}

在LinearRecycleViewActivity中绑定recycle view控件,设置线性布局管理器和适配器

recycleview 添加item问题 recyclerview怎么添加_android_15

LinearRecycleViewActivity完整代码

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.example.recycleapplication.R;

public class LinearRecycleViewActivity extends AppCompatActivity {

    private RecyclerView rl_view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_linear_recycle_view);

        //绑定控件
        rl_view = findViewById(R.id.rl_view);
        //设置线性布局管理器
        rl_view.setLayoutManager(new LinearLayoutManager(LinearRecycleViewActivity.this));
        //设置adapter
        rl_view.setAdapter(new LinearAdapter(LinearRecycleViewActivity.this));
    }
}

完成

recycleview 添加item问题 recyclerview怎么添加_android_03

总结:这块看不懂的小伙伴可以自己梳理一下逻辑

1、创建一个Empty Activity 命名为RecycleViewActivity,添加按钮进行跳转

2、再创建一个Empty Activity 命名为LinearRecycleViewActivity,进行显示item

3、给LinearRecycleViewActivit创建适配器,命名为LinearAdapter

4、adapter需要循环item,viewholder继承RecyclerView.ViewHolder

5、将viewholder 传值给adapter

6、修改适配器函数参数与返回值

7、需要将添加了图片/文字的布局文件添加到recycle view中,所以创建构造函数,引用所需要的布局文件

8、设置item的数量

9、在viewholder子类构造函数中,获取引用布局文件控件

9、在LinearRecycleViewActivity中绑定recycle view控件,设置线性布局管理器和适配器

10、完成

3、水平列表视图

样式

recycleview 添加item问题 recyclerview怎么添加_android studio_17

3.1  新建水平activity:命名:LinearHorActivity

在布局文件中添加recycle view

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RecycleView.LinearHorActivity"
    android:orientation="vertical">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rl_hor_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

</LinearLayout>

给LinearHorActivity添加适配器,新建布局文件,命名为:LinearHorAdapter,layout_hor_item

可复制之前创建的LinearAdapter和layout_linear_item

将需要展示的布局文件添加,更改控件ID

recycleview 添加item问题 recyclerview怎么添加_android_18

LinearHorActivity设置线性布局器,将布局器的方向设置为水平 

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.example.recycleapplication.R;

public class LinearHorActivity extends AppCompatActivity {

    private RecyclerView rl_view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_linear_hor);

        rl_view =  findViewById(R.id.rl_hor_view);

        //生成一个LinearLayoutManager的对象
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(LinearHorActivity.this);
        //设置这个线性布局管理器的方向,为水平方向
        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        //设置mHorRV的线性布局管理器
        rl_view.setLayoutManager(linearLayoutManager);
        //设置适配器:Adapter
        rl_view.setAdapter(new LinearHorAdapter(LinearHorActivity.this));
    }
}

3.2 在RecycleViewActivity的布局文件中添加按钮,实现页面的跳转

recycleview 添加item问题 recyclerview怎么添加_控件_19

RecycleViewActivity中添加监听事件

btn_hor.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(RecycleViewActivity.this,LinearHorActivity.class);
                startActivity(intent);
            }
        });

完成

recycleview 添加item问题 recyclerview怎么添加_android studio_17

4、网格状recycle view

样式

recycleview 添加item问题 recyclerview怎么添加_android_21

4.1 新建Empty Activity 命名为 GridRecyclerViewActivity

activity_grid_recycler_view中添加recycle view控件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RecycleView.GridRecyclerViewActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rl_grid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/green"/>

</LinearLayout>

4.2 新建布局文件,命名为layout_grid_item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv_grid_item"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:src="@drawable/layout_grid_item"/>

    <TextView
        android:id="@+id/tv_grid_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="王一博"
        android:layout_gravity="center_horizontal"
        android:textSize="20sp"/>

</LinearLayout>

4.3 给GridRecyclerViewActivity添加适配器,命名为GridAdapter

创建子类GridViewHolder继承RecycleView.ViewHolder

recycleview 添加item问题 recyclerview怎么添加_android studio_22

GridViewHolder传进去给Adapter,然后修改复写函数的返回值,和传入参数类型:

recycleview 添加item问题 recyclerview怎么添加_xml_23

 GridAdapter完整的代码

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.recycleapplication.R;

public class GridAdapter extends RecyclerView.Adapter<GridAdapter.GridViewHolder> {

    private Context mContext;
    private LayoutInflater mLayoutInflater;
    //将所需要的布局加载进去
    public GridAdapter(Context context){
        this.mContext = context;
        mLayoutInflater = LayoutInflater.from(context);

    }

    @NonNull
    @Override
    public GridViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        //将所需要的布局文件加载到当前类当中
        return new GridViewHolder(mLayoutInflater.inflate(R.layout.layout_grid_item,
                parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull GridViewHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return 20;
    }

    //添加控件对象,获取item控件
    class GridViewHolder extends RecyclerView.ViewHolder{

        private ImageView iv_item;
        private TextView tv_item;

        public GridViewHolder(@NonNull View itemView) {
            super(itemView);

            iv_item = itemView.findViewById(R.id.iv_grid_item);
            tv_item = itemView.findViewById(R.id.tv_grid_item);
        }
    }
}

4.4 在 GridRecyclerViewActivity中绑定recycle view控件,设置网格布局器和适配器

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.example.recycleapplication.R;

public class GridRecyclerViewActivity extends AppCompatActivity {

    private RecyclerView rl_grid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grid_recycler_view);
        //控件绑定
        rl_grid = findViewById(R.id.rl_grid);
        //设置布局管理器
        rl_grid.setLayoutManager(new GridLayoutManager(GridRecyclerViewActivity.this,3));
        //设置适配器
        rl_grid.setAdapter(new GridAdapter(GridRecyclerViewActivity.this));
    }
}

完成

recycleview 添加item问题 recyclerview怎么添加_android_21