RecycleView的基本使用详解(1)--小白专用版,绝对实用

2019/7/23 15:21:38 人评论 次浏览 分类:学习教程

前言:小白借鉴,大佬绕路,文章介绍一下基本的RecycleView的简单使用。

  1. 首先导入support-v7的包

implementation ‘com.android.support:recyclerview-v7:28.0.0’

  1. 创建一个XML文件,添加recycleview的控件如图所示
    在这里插入图片描述
  2. 为recyview添加一个item布局
    在这里插入图片描述
  3. 在Activity中初始化recycleview,并配置Manager.看如下代码。
    在这里插入图片描述
  4. 实现recycleview的adapter的类,继承于RecyclerView.Adapter,RecyclerView.Adapter中的<RecyclerAdapter.ViewHolder>是代表泛型,表示不同的view。RecyclerView.Adapter中几个比较重要的函数意义解释一下:
    (1) ViewHolder:初始化各个view
    (2)onCreateViewHolder:配置布局Layout
    (3)onBindViewHolder 将数组中的数据与视图绑定。
    (4)getItemCount() 返回数组的大小。
    在这里插入图片描述
  5. 到此简单的recycleview的使用就一家讲完了,下面附上详细的代码,方便大家复制粘贴。下一篇讲下给
    recycleview添加头部和尾部的使用方法。敬请期待。
  6. MainActivity的类
public class MainActivity extends AppCompatActivity {

    private RecyclerView recy_attendance;
    private RecyAttendanceAdapter mRecyAttendanceAdapter;

    //测试数据
    private List<String> testDatas = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initDatas();
        initView();
    }

    //测试数据
    private void initDatas() {
        for (int i = 0; i < 20; i++) {
            testDatas.add("data"+i);
        }
    }

    private void initView() {
        recy_attendance = findViewById(R.id.recy_attendance);
        //初始化适配器
        mRecyAttendanceAdapter = new RecyAttendanceAdapter(this,testDatas);
        //配置layoutManager
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recy_attendance.setLayoutManager(layoutManager);
        //配置adapter
        recy_attendance.setAdapter(mRecyAttendanceAdapter);
    }
}
  1. Adapter的类
public class RecyAttendanceAdapter extends RecyclerView.Adapter<RecyAttendanceAdapter.MyViewHolder> {

    private Context mContext;
    private List<String> mDatas;

    public RecyAttendanceAdapter(Context mContext, List<String> mDatas) {
        this.mContext = mContext;
        this.mDatas = mDatas;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recyview_layout, parent, false);
        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int position) {
        //取出数据,进行显示填充
        String s = mDatas.get(position);
        myViewHolder.tv.setText(s);
    }

    @Override
    public int getItemCount() {
        return mDatas.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView tv;
        public MyViewHolder(View itemView) {
            super(itemView);
            tv = itemView.findViewById(R.id.hello_tv);
        }
    }
}

8.相关的XML文件

R.layout.activity_main

<android.support.constraint.ConstraintLayout 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=".MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recy_attendance"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="16dp"
        android:layout_marginBottom="16dp">
    </android.support.v7.widget.RecyclerView>

</android.support.constraint.ConstraintLayout>

R.layout.item_recyview_layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:background="@android:color/holo_orange_dark"
        android:id="@+id/hello_tv"
        android:layout_gravity="center"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:gravity="center"/>
    <View
        android:background="#FFFFFF"
        android:layout_width="match_parent"
        android:layout_height="5dp"/>
</LinearLayout>

相关资讯

    暂无相关的资讯...

共有访客发表了评论 网友评论

验证码: 看不清楚?
    -->