You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Kotlin创建三列布局的RecyclerView

实现三列布局的RecyclerView

1. 配置RecyclerView的LayoutManager

核心是使用GridLayoutManager并指定列数为3,直接在代码中设置即可:

Kotlin 代码:

val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
// 第二个参数为列数,固定设为3
recyclerView.layoutManager = GridLayoutManager(this, 3)
recyclerView.adapter = YourAdapter(yourDataList)

Java 代码:

RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
recyclerView.setAdapter(new YourAdapter(yourDataList));

2. 创建Grid Item布局

新建item_grid.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:padding="8dp"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/item_image"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="centerCrop"
        android:background="#f0f0f0"/>

    <TextView
        android:id="@+id/item_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:textSize="14sp"/>

</LinearLayout>

3. 实现RecyclerView Adapter

创建适配类完成数据与布局的绑定:

Kotlin 版本:

class YourAdapter(private val dataList: List<GridItem>) : RecyclerView.Adapter<YourAdapter.ViewHolder>() {

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val itemImage: ImageView = itemView.findViewById(R.id.item_image)
        val itemText: TextView = itemView.findViewById(R.id.item_text)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.item_grid, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = dataList[position]
        holder.itemText.text = item.title
        // 加载图片示例(需引入Glide/Picasso等图片加载库)
        // Glide.with(holder.itemView.context).load(item.imageUrl).into(holder.itemImage)
    }

    override fun getItemCount() = dataList.size
}

// 数据模型类
data class GridItem(val title: String, val imageUrl: String)

Java 版本:

public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> {

    private List<GridItem> dataList;

    public YourAdapter(List<GridItem> dataList) {
        this.dataList = dataList;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        ImageView itemImage;
        TextView itemText;

        public ViewHolder(View itemView) {
            super(itemView);
            itemImage = itemView.findViewById(R.id.item_image);
            itemText = itemView.findViewById(R.id.item_text);
        }
    }

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

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        GridItem item = dataList.get(position);
        holder.itemText.setText(item.getTitle());
        // 加载图片示例
        // Glide.with(holder.itemView.getContext()).load(item.getImageUrl()).into(holder.itemImage);
    }

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

// 数据模型类
public class GridItem {
    private String title;
    private String imageUrl;

    public GridItem(String title, String imageUrl) {
        this.title = title;
        this.imageUrl = imageUrl;
    }

    public String getTitle() {
        return title;
    }

    public String getImageUrl() {
        return imageUrl;
    }
}

4. 添加依赖

确保Module级别的build.gradle中引入RecyclerView依赖:

dependencies {
    implementation 'androidx.recyclerview:recyclerview:1.3.2'
    // 如果使用Glide加载图片,添加:
    // implementation 'com.github.bumptech.glide:glide:4.15.1'
}

内容的提问来源于stack exchange,提问作者RONI BaCk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:30:19