• RecyclerView


    RecyclerView:
    优点:
    提供了一种插拔式的体验,高度解耦,异常灵活
    用法:
    1.通过布局管理器LayoutManager控制其显示方式
    2.通过ItemDecoration控制Item的间隔(可绘制)
    3.通过ItemAnimator控制Item的增删动画
    首先在build.gradle中添加依赖:

    implementation 'com.android.support:recyclerview-v7:28.0.0'
    

    版本号因人而异,我的是28,然后建立item_view.xml,设置其子项显示的布局:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="80dp">
    
        <TextView
            android:id="@+id/textView"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </android.support.constraint.ConstraintLayout>
    

    设置activity_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.fitsoft.MainActivity">
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </android.support.constraint.ConstraintLayout>
    

    MainActivity:

    package com.fitsoft;
    
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        RecyclerView recyclerView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            recyclerView = findViewById(R.id.recycler_view);
            //设置线性布局管理器
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
            recyclerView.setLayoutManager(linearLayoutManager);
    
            //设置适配器
            MyAdapter myAdapter = new MyAdapter();
            recyclerView.setAdapter(myAdapter);
        }
    
        private class MyAdapter extends RecyclerView.Adapter{
    
            MyViewHolder viewHolder;
    
            @NonNull
            @Override
            public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
                //绑定布局
                View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_view, viewGroup, false);
                //绑定布局里面的元素
                //由于RecyclerView.ViewHolder是静态抽象类,不能实例化,只能新建一个类来继承
                viewHolder = new MyViewHolder(itemView);
                return viewHolder;
            }
    
            @Override
            public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
                //这里的viewHolder其实就是我们新建的MyViewHolder类的一个对象,这里进行强制转换
                //数据的处理都在这个函数里面
                ((MyViewHolder) viewHolder).textView.setText("编号:"+i);
            }
    
            @Override
            public int getItemCount() {
                //返回子项的个数
                return 30;
            }
    
            private class MyViewHolder extends RecyclerView.ViewHolder{
                //继承这个静态抽象类,使之可以被绑定
                private TextView textView;
                MyViewHolder(@NonNull View itemView) {
                    super(itemView);
                    textView = itemView.findViewById(R.id.textView);
                }
            }
        }
    }
    

    注释很详细。
    效果图:

    ![](https://i.loli.net/2019/09/24/SuLdTxUH6arP5Kg.gif)
  • 相关阅读:
    从零一起学Spring Boot之LayIM项目长成记(五)websocket
    从斐波那契数列看递归和尾递归
    通讯框架 t-io 学习——websocket 部分源码解析
    通讯框架 t-io 学习——给初学者的Demo:ShowCase设计分析
    从零一起学Spring Boot之LayIM项目长成记(四) Spring Boot JPA 深入了解
    从零一起学Spring Boot之LayIM项目长成记(三) 数据库的简单设计和JPA的简单使用。
    从零一起学Spring Boot之LayIM项目长成记(二) LayIM初体验
    从零一起学Spring Boot之LayIM项目长成记(一) 初见 Spring Boot
    初始Turtle
    python介绍
  • 原文地址:https://www.cnblogs.com/zqm-sau/p/11580411.html
Copyright © 2020-2023  润新知