当前位置: 首页 > article >正文

[Android常见View的用法] RecyleView基本用法

文章目录

  • 一. 通用子项写法

一. 通用子项写法

要在 RecyclerView 中实现每个子项包含图片和文字,你需要完成以下步骤:

  1. 创建数据模型
    你需要一个数据模型来表示每个子项的数据。假设每个子项包含一张图片和一段文字,可以创建一个简单的类来表示这些数据。例如:

    public class Item {
        private String text;
        private int imageResId; // 图片的资源ID
    
        public Item(String text, int imageResId) {
            this.text = text;
            this.imageResId = imageResId;
        }
    
        public String getText() {
            return text;
        }
    
        public int getImageResId() {
            return imageResId;
        }
    }
    
  2. 创建布局文件
    你需要为每个子项定义一个布局文件。例如,item_layout.xml 文件可能如下所示:

    <?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="horizontal"
        android:padding="8dp">
    
        <ImageView
            android:id="@+id/item_image"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginEnd="8dp"
            android:contentDescription="@string/image_desc" />
    
        <TextView
            android:id="@+id/item_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16sp" />
    </LinearLayout>
    
  3. 创建适配器
    创建一个适配器类来将数据绑定到布局中。适配器负责将数据绑定到 RecyclerView 的子项视图。适配器示例如下:

    public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> {
        private List<Item> itemList;
    
        public static class ViewHolder extends RecyclerView.ViewHolder {
            public ImageView imageView;
            public TextView textView;
    
            public ViewHolder(View itemView) {
                super(itemView);
                imageView = itemView.findViewById(R.id.item_image);
                textView = itemView.findViewById(R.id.item_text);
            }
        }
    
        public ItemAdapter(List<Item> itemList) {
            this.itemList = itemList;
        }
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.item_layout, parent, false);
            return new ViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            Item item = itemList.get(position);
            holder.textView.setText(item.getText());
            holder.imageView.setImageResource(item.getImageResId());
        }
    
        @Override
        public int getItemCount() {
            return itemList.size();
        }
    }
    
  4. 设置 RecyclerView
    在你的活动或片段中,初始化 RecyclerView 和适配器,并将适配器设置到 RecyclerView 中:

    RecyclerView recyclerView = findViewById(R.id.recycler_view);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    
    List<Item> itemList = new ArrayList<>();
    // 添加数据到 itemList
    itemList.add(new Item("Item 1", R.drawable.image1));
    itemList.add(new Item("Item 2", R.drawable.image2));
    // ...
    
    ItemAdapter adapter = new ItemAdapter(itemList);
    recyclerView.setAdapter(adapter);
    

通过以上步骤,你可以实现一个 RecyclerView 的每个子项包含图片和文字。根据具体需求,你可以对布局和适配器进行调整和扩展。


http://www.kler.cn/news/283531.html

相关文章:

  • 群晖7.2.1 半洗白后安装AME
  • Python(R)均方根误差平均绝对误差导图
  • helm学习第三篇--结合 springboot 单做
  • 深度强化学习算法(六)(附带MATLAB程序)
  • 正弦波振荡器工作原理及频率稳定性条件
  • 【JVM】OOM与调优(二)
  • C++ 设计模式——代理模式
  • 桥接模式-多类型登录方式的思考
  • C语言入门基础知识(持续更新中)
  • 预处理详解(二)
  • vscode链接到远程
  • 企业微信dll,最新版dll
  • 什么是数据库 DevOps?
  • Java虚拟机(JVM)内存管理
  • 基于Spring的单点登录SSO实现(redis+JWT+SpringSecurity)
  • Windows bat脚本学习四(字符串操作)
  • 时序预测 | 基于VMD-SSA-LSSVM+LSTM多变量时间序列预测模型(Matlab)
  • 数据库视图的使用
  • Linux - 深入探讨 Linux `ls` 命令:一个全面的技术指南
  • Leetcode3238. 求出胜利玩家的数目
  • 2022 年高教社杯全国大学生数学建模竞赛-C 题 古代玻璃制品的成分分析与鉴别详解+分类模型Python代码源码
  • Oracle 12c 多节点集群剔除节点操作
  • 【bug】可图文生图模型 KolorsPipeline IndexError: list index out of range
  • 足球联赛|基于SprinBoot+vue的足球联赛管理系统(源码+数据库+文档)
  • 基于深度学习的金属锈蚀检测系统详细实施指南
  • 物料信息库管理杂谈
  • 卡尔曼滤波算法(c语言代码)
  • Google play应用老包突然被暂停和删除了,什么原因?
  • 编织网络之魂:Ruby网络编程指南
  • 打卡第58天------图论