[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 的每个子项包含图片和文字。根据具体需求,你可以对布局和适配器进行调整和扩展。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RecyclerViewAndroid SDK 自带的一个 UI 组件,用于展示列表数据,是 ListView 的升级版。相比于 ListView,RecyclerView 更为灵活,可以自定义布局和动画效果,支持横向和纵向滚动,支持多种布局管理器等。下面简单介绍 RecyclerView用法。 1. 引入依赖 在项目的 build.gradle 文件中添加以下依赖: ``` dependencies { implementation 'com.android.support:recyclerview-v7:28.0.0' } ``` 2. 在布局文件中添加 RecyclerView ``` <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 创建 Adapter Adapter 是 RecyclerView 中一个重要的概念,用于绑定数据和视图,将数据渲染到 RecyclerView 中。需要继承 RecyclerView.Adapter 类,实现以下方法: - onCreateViewHolder(ViewGroup parent, int viewType):创建 ViewHolder,即创建列表项的视图。 - onBindViewHolder(ViewHolder holder, int position):绑定数据到 ViewHolder,即将数据渲染到视图中。 - getItemCount():获取列表项的数量。 ``` public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mDataList; public MyAdapter(List<String> dataList) { mDataList = dataList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mTextView.setText(mDataList.get(position)); } @Override public int getItemCount() { return mDataList.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { public TextView mTextView; public ViewHolder(View itemView) { super(itemView); mTextView = itemView.findViewById(R.id.text_view); } } } ``` 4. 设置 LayoutManager LayoutManager 用于设置 RecyclerView 的布局方式,包括线性布局、网格布局、瀑布流布局等。可以通过以下方法设置: ``` // 线性布局 LinearLayoutManager layoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); // 网格布局 GridLayoutManager layoutManager = new GridLayoutManager(this, 3); recyclerView.setLayoutManager(layoutManager); // 瀑布流布局 StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutManager); ``` 5. 设置 ItemDecoration ItemDecoration 用于为 RecyclerView 中的列表项添加分割线、间距等装饰效果。可以通过以下方法设置: ``` // 添加分割线 recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); // 添加间距 recyclerView.addItemDecoration(new SpaceItemDecoration(10)); ``` 6. 设置 Adapter 将 Adapter 设置到 RecyclerView 中: ``` MyAdapter adapter = new MyAdapter(mDataList); recyclerView.setAdapter(adapter); ``` 以上就是 RecyclerView基本用法。如果需要实现列表项的动画效果、滑动删除、拖拽排序等功能,还需要通过 ItemAnimator、ItemTouchHelper 等配合使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值