IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> RecycleView -> 正文阅读

[移动开发]RecycleView

RecycleView

  1. RecycleView是什么?

    在很多列表场景中能替代ListView和GridView

    RecycleView能够灵活实现大数据的展示,视图的复用管理比ListView更好,能够显示列表,网格,瀑布等形式,且不同的ViewHolder能够实现item多元化的功能

  2. RecycleView的用法是什么?

    布局文件:

                1. 主布局文件中添加<RecycleView>
    
    
                2. 创建子项布局文件,并对其内部控件设置id

    代码:

    1. 创建实体类(如果有需求)

public class AddressBook {
    private  String name;
    private  int imgId;

    public  AddressBook(String name,int imgId){
        this.name=name;
        this.imgId=imgId;
    }


    public  String getName() {
        return name;
    }

    public int getImageId() {
        return imgId;
    }
}
  1. 2创建适配器
  2. public class AddressBookAdapter extends RecyclerView.Adapter<AddressBookAdapter.ViewHolder> {
        private List<AddressBook> list;
        public AddressBookAdapter(List<AddressBook> list){
            this.list=list;
        }
        @NonNull
        @Override
        public AddressBookAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.add81_item, parent, false);
            ViewHolder viewHolder=new ViewHolder(view);
            return viewHolder;
        }
    
        @Override
        public void onBindViewHolder(@NonNull AddressBookAdapter.ViewHolder holder, int position) {
            AddressBook addressBook=list.get(position);
            holder.AddressBookImage.setImageResource(addressBook.getImageId());
            holder.AddressBookImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(view.getContext(), addressBook+"被点击", Toast.LENGTH_SHORT).show();
                }
            });
            holder.AddressBookName.setText(addressBook.getName());
            holder.view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(view.getContext(), addressBook.getName()+"被点击", Toast.LENGTH_SHORT).show();
                }
            });
        }
    
        @Override
        public int getItemCount() {
            return list.size();
        }
    
        public class ViewHolder extends RecyclerView.ViewHolder {
            View view;
            ImageView AddressBookImage;
            TextView AddressBookName;
            public ViewHolder(@NonNull View itemView) {
                super(itemView);
                view=itemView;
                AddressBookImage=itemView.findViewById(R.id.iv_img);
                AddressBookName=itemView.findViewById(R.id.tv_name);
            }
        }

    1. 3在活动中创建并设置适配器

public class MainActivity extends AppCompatActivity {
    private String[] names = {"张三", "李四", "王五","赵六"};
    private int[] imgs = {R.mipmap.qingning, R.mipmap.huoguo, R.mipmap.shengjian,R.mipmap.huiyuan};

    private List<AddressBook> list = new ArrayList<>();
    private RecyclerView rv_view;

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

        ininDate();
       rv_view = findViewById(R.id.rv_view);
       RecyclerView recyclerView = findViewById(R.id.rv_view);
            //设置布局管理器
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    // rv_view.setLayoutManager(layoutManager);
//        recyclerView.setAdapter(adapter);
//        rv_view.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));

        rv_view.setLayoutManager(layoutManager);
        AddressBookAdapter adapter = new AddressBookAdapter(list);
        rv_view.setAdapter(adapter);
    }
    private void ininDate() {
        for (int i = 0; i < names.length; i++) {
            AddressBook addressBook = new AddressBook(names[i], imgs[i]);
            list.add(addressBook);
        }
    }

  1. 4在活动中设置排列方式及分隔线
  2. p_swiper = findViewById(R.id.vp_swiper);
            SwiperAdapter swiperAdapter = new SwiperAdapter(list);
            rv_view.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
    
            vp_swiper.setAdapter(swiperAdapter);

    1. 设置点击事件

    2.  holder.AddressBookImage.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      Toast.makeText(view.getContext(), addressBook+"被点击", Toast.LENGTH_SHORT).show();
                  }
              });
              holder.AddressBookName.setText(addressBook.getName());
              holder.view.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      Toast.makeText(view.getContext(), addressBook.getName()+"被点击", Toast.LENGTH_SHORT).show();
                  }
              });
          }

ViewPager2

  1. ViewPager2是什么?

    ViewPager2 是基于 RecyclerView 实现的,自然继承了 RecyclerView 的众多优点,并且针对 ViewPager 存在的问题做了优化。 支持垂直方向的滑动且实现极其简单。 完全支持 RecyclerView 的相关配置功能。 支持多个 PageTransformer。 支持 DiffUtil,局部数据刷新和 Item 动画。 支持模拟用户滑动与禁止用户操作

  2. ViewPager2的用法?

    布局文件:

                1. 主布局文件中添加<ViewPager2>
                2. 创建子项布局文件,并对其内部控件设置id

    代码:

    1. 创建实体类(如果有需求)

    2. 创建适配器

    3. 在活动中创建并设置适配器

    4. . CompositePageTransformer 与自定义 Transformer

    5. 实现一屏多页效果? ?

跟上面代码差不多 请合理编写

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:55:38  更:2022-08-06 10:59:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 4:51:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码