首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android:如何在GridView或RecyclerView中形成1-2-1列表项?

在Android中,可以通过使用GridView或RecyclerView来实现1-2-1列表项的布局。

  1. GridView: GridView是一个可滚动的网格视图,可以用于显示多个项目,并且可以自动调整项目的大小以适应屏幕。要在GridView中实现1-2-1列表项的布局,可以按照以下步骤进行操作:

步骤1:在布局文件中添加GridView组件。

代码语言:txt
复制
<GridView
    android:id="@+id/gridView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:numColumns="2"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>

步骤2:创建一个适配器(Adapter)来为GridView提供数据。

代码语言:txt
复制
public class GridAdapter extends BaseAdapter {
    private Context mContext;
    private List<String> mData;

    public GridAdapter(Context context, List<String> data) {
        mContext = context;
        mData = data;
    }

    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        return mData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = LayoutInflater.from(mContext).inflate(R.layout.grid_item, parent, false);
            holder = new ViewHolder();
            holder.textView = convertView.findViewById(R.id.text_view);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.textView.setText(mData.get(position));

        return convertView;
    }

    private static class ViewHolder {
        TextView textView;
    }
}

步骤3:创建一个布局文件(grid_item.xml)来定义GridView中每个项目的布局。

代码语言:txt
复制
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="16sp"
    android:background="@android:color/darker_gray"
/>

步骤4:在Activity中设置GridView的适配器。

代码语言:txt
复制
GridView gridView = findViewById(R.id.gridView);
List<String> data = new ArrayList<>();
// 添加数据到data列表中
GridAdapter adapter = new GridAdapter(this, data);
gridView.setAdapter(adapter);
  1. RecyclerView: RecyclerView是一个更灵活和强大的列表视图,可以用于显示大量数据,并且支持更多的自定义选项。要在RecyclerView中实现1-2-1列表项的布局,可以按照以下步骤进行操作:

步骤1:在布局文件中添加RecyclerView组件。

代码语言:txt
复制
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
/>

步骤2:创建一个适配器(Adapter)来为RecyclerView提供数据。

代码语言:txt
复制
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
    private Context mContext;
    private List<String> mData;

    public RecyclerAdapter(Context context, List<String> data) {
        mContext = context;
        mData = data;
    }

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

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.textView.setText(mData.get(position));
    }

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

    public static class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.text_view);
        }
    }
}

步骤3:创建一个布局文件(recycler_item.xml)来定义RecyclerView中每个项目的布局。

代码语言:txt
复制
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="16sp"
    android:background="@android:color/darker_gray"
/>

步骤4:在Activity中设置RecyclerView的布局管理器和适配器。

代码语言:txt
复制
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
List<String> data = new ArrayList<>();
// 添加数据到data列表中
RecyclerAdapter adapter = new RecyclerAdapter(this, data);
recyclerView.setAdapter(adapter);

以上是在Android中使用GridView和RecyclerView实现1-2-1列表项布局的方法。在实际应用中,可以根据具体需求进行适当的修改和定制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发笔记(一百二十二)循环器视图RecyclerView

RecyclerView RecyclerViewAndroid在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView、GridView,以及瀑布流网格的显示效果...RecyclerView相关工程在sdk的路径为sdk\extras\android\support\v7\recyclerview,不过幸好用它不像用Toolbar那样麻烦,要想使用Toolbar得先导入并引用...它不但提供了三类布局管理,分别实现类似ListView、GridView、瀑布流网格的效果,而且可在代码随时由RecyclerView调用setLayoutManager方法设置新的布局;一旦调用了setLayoutManager...方法,界面就会根据新布局刷新列表项,这个特性特别适合于手机在竖屏/横屏之间的显示切换(竖屏时展示ListView,横屏时展示GridView),也适合在不同屏幕分辨率手机/平板之间的显示切换(手机上展示...之前我们要想实现瀑布流效果,都得自定义控件或者借助于第三方开源库StaggeredGridView、PinterestLikeAdapterView等等;现在Android在support-v7库推出了

2.4K20

Android RecyclerView浅析(分类型)

Android RecyclerView浅析 1.RecyclerView概述&简介 简单介绍: 整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同...mRecyclerView.setLayoutManager(new GridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false)); 参数一:上下文; 参数二:指明行数(Horizontal),数...mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL)); 参数一:指明行数(Horizontal),数...(Vertical); 参数二:指明方向; 4.给RecyclerView的Item设置点击事件有两种: 方式一:在Adapter的onBindViewHolder()方法设置,也可以定义一个接口回调...5.1布局 <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android

1.1K20

揭开RecyclerView庐山真面目

另外ListView的可扩展性相对来说比较弱,以前要实现每个列表项的高度不同的界面,或者要完成瀑布流效果,需要非常复杂的自定义处理。...它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。...回收重用一个View的时候,LayoutManager会向适配器请求新的数据来替换旧的数据,这种机制避免了创建过多的View和频繁的调用findViewById方法。...GridLayoutManager:在网格展示条目,相当于之前学习的GridView。 StaggeredGridLayoutManager: 在错落的网格展示条目,比如常见的瀑布流。.../目录下新建一个recyclerview_item.xml的列表项布局文件,其代码如下: <RelativeLayout xmlns:android="http://schemas.android.com

1.8K80

Android开发:ListView、AdapterView、RecyclerView全面解析

Adapter,用于将数组绑定为列表项的数据源,支持泛型操作 SimpleAdapter:功能强大的Adapter,用于将XML控件绑定为列表项的数据源 SimpleCursorAdapter:与SimpleAdapter...SimpleAdapter 定义 功能强大的Adapter,用于将XML控件绑定作为列表项的数据源 特点 可对每个列表项进行定制(自定义布局),能满足大多数开发的需求场景,灵活性较大 步骤...这样就形成了Adapter的itemView重用机制,减少了重绘View的次数。...优缺点 优点 : 有了ListView、GridView为什么还需要RecyclerView这样的控件呢?...总结 本文对ListView、AdapterView、RecyclerView进行了全面整理,接下来我会介绍继续介绍Android开发的相关知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记 -

3.4K30

RecyclerView详解

“大哥”,请听我们娓娓道来~ 简介 RecyclerView是Google在API 21下 support.V7包里的控件,用来替代 ListView与 GridView。...:recyclerview-v7:27.1.1' 2.布局添加RecyclerView <?...设置网格布局GridLayoutManager 日常开发经常需要有多行的形式来展示各个卡位信息,而一些类似于九宫格之类的布局也可以用这个实现。只需要修改设置布局管理器即可,还是很nice的。...下面以两者都设置为竖直方向多的样式来区分: 1、网格样式每一行的所有 item 高度是一致的,不同行可以不一样,但同行的都是一样的,因此它就实现不了瀑布流的样式了;瀑布流所有的 item 高度都允许不一样...使用RecyclerView的优缺点 优点: 1、提供 ViewHolder模式,使得开发者真正操作的是 ViewHolder,而不是像 ListViewGridView,需要开发者自己 setTag

2.9K21

浅谈RecyclerView(完美替代ListView,GridView)

首先总结下RecyclerView的特点: 1.支持不同方向,不同排版模式,实现多种展现数据的形式,涵盖了ListView,GridView,瀑布流等数据表现的形式 2.内部实现了回收机制,无需我们考虑...的基本使用  android studio  build.gradle文件 dependencies添加  compile 'com.android.support:recyclerview-v7:...Adapter,列表项布局,数据源 1.先写主Activity布局 可以看到RecyclerView的标签 1 <LinearLayout...2.GridView显示模式 1 // 2.Grid布局 2 RecyclerView.LayoutManager layoutManager = 3 new...首先看一下以往我们对listview,gridview等等的删除某一项的操作 先在数据源删除该位置的数据,然后刷新整个适配器,那么就可能会造成列表闪屏的问题,还有为了删除添加一个数据项而操作整个数据源的问题

2.2K60

Android RecyclerView 使用完全解析 体验艺术般的控件

那么有了ListView、GridView为什么还需要RecyclerView这样的控件呢?...但是如果我们有这么个需求,纵屏的时候显示为ListView,横屏的时候显示两GridView,我们RecyclerView可以轻松搞定,而如果使用ListView去实现还是需要点功夫的~~~ 当然了...是不是棒棒哒,通过RecyclerView去实现ListView、GridView、瀑布流的效果基本上没有什么区别,而且可以仅仅通过设置不同的LayoutManager即可实现。...可以看到RecyclerView可以实现: ListView的功能 GridView的功能 横向ListView的功能,参考Android 自定义RecyclerView 实现真正的Gallery效果...通过简单改变下LayoutManager,就可以产生不同的效果,那么我们可以根据手机屏幕的宽度去动态设置LayoutManager,屏幕宽度一般的,显示为ListView;宽度稍大的显示两GridView

1.6K10

Flutter跨平台移动端开发丨SingleChildScrollView、ListView......

默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界时,继续拖动的话,在iOS上会出现弹性效果,而在Android上会出现微光效果。...默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界时,继续拖动的话,在iOS上会出现弹性效果,而在Android上会出现微光效果。...ListView.builder 当 listview 的列表项较多数量未知时,就需要使用 ListView.builder 来构建列表了 import 'package:flutter/material.dart...默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界时,继续拖动的话,在iOS上会出现弹性效果,而在Android上会出现微光效果。...ListView 和 GridView 都有对应的组合对象:SliverList 和 SliverGrid。

8.6K51

Android开发笔记(三十八)列表类视图

一般情况下自定义适配器继承自BaseAdapter就够用了,当然Android为了方便懒人,专门扩展了两种简单易用的适配器,ArrayAdapter用于每行只显示文本的情况,而SimpleAdapter...stackFromBottom : 指定列表项是否从下往上显示。 代码的方法: setDivider : 设置分隔线的图形。 setDividerHeight : 设置分隔线的高度。...两种使用方式的区别如下: 1、ListActivity方式的视图id被设置为系统id,不方便在代码修改该列表视图的属性; 2、ListActivity方式只实现点击方法、未实现长按方法,不方便响应列表项的长按事件...取值说明如下:none表示不做拉伸;columnWidth表示若有空余空间,则拉伸与宽大小一致;spacingWidth表示若有空余空间,则宽不变,把空余分配到每间的空隙;spacingWidthUniform...与spacingWidth的区别在于,Uniform方式在每左边和右边都补上空隙(即每行开头和末尾都补空隙),而spacingWidth在每行开头和末尾不补空隙,只有之间才补空隙。

2.3K20

Android从零单排系列二十】《Android视图控件——ListView》

布局:ListView的每个列表项通常由一个布局文件定义,用于指定列表项的外观和内容。可以在布局文件添加控件来显示列表项的各个元素。...添加数据:通过适配器向ListView添加数据,可以使用适配器的方法(add()、addAll())添加单个多个数据项。一旦数据被添加到适配器,ListView会自动刷新并显示新数据。...android:dividerHeight:设置列表项之间的分割线高度,可以使用具体数值和单位("dp")。...invalidateViews():通知ListView刷新所有列表项的视图。  适配器: RecyclerViewRecyclerView是取代ListView的新一代列表视图控件。...你可以根据需要修改数据源和列表项布局,以适应不同的情况。同时,你还可以添加点击事件监听器来处理ListView表项的交互操作。

46610

解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题

我们先看一个效果,问题说的就是中间的Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好的,不过在5,1,1版本(api 22)缺出现了问题 最近项目中...,有一个商品详情页面,页面有好几个网格页面,大家说,我们大可以用GridView去做,但是需要方的要求是,我们的网格的中间的线怎么做呢,对于GridView,我们知道我们可以这是一个背景,然后用verticalSpacing...以前在ScrollView嵌套嵌套ListView,无法正确的计算ListView的大小,现在我们在ScrollView嵌套嵌套RecycleView的时候,也出现了计算不出高度的问题,于是有人想到我们是不是可以自己实现一个重写一个继承自...); } private int getSpanCount(RecyclerView parent) { // 数 int spanCount =...android.support.v7.widget.RecyclerView android:id="@+id/menuRv"

3.3K50

听说你想玩RecyclerView嵌套GridView

RecyclerView嵌套GridView 问题及原因 有很多小伙伴们可能会遇到这样的问题: 为什么不论我传入多大size的List,我的GridView只能显示一行?...因为RecyclerViewGridView都属于可滑动控件,两者嵌套会导致滑动冲突,Android不允许这样的情况出现,所以索性将GridView宽度定死,定为一行Item的高度且不可滑动,所以导致了我们只显示一行这个问题的出现...* 2 个人猜测,当RecyclerView嵌套GridView的时候,其GridView的MeasureSpec的模式为UNSPECIFIED**。...EXACTLY模式 因EXACTLY模式下,GridView的高度已经设定好了,所以不用获取子项的高度及边距等,源码通过int heightSize = MeasureSpec.getSize(heightMeasureSpec...代码如下: import android.content.Context; import android.util.AttributeSet; import android.widget.GridView

2.4K20

Android使用RecyclerView仿美团分类界面

RecyclerView目前来说对大家可能不陌生了。由于在公司的项目中,我们一直用的listview和gridview。...某天产品设计仿照美团的分类界面设计了一个界面,我发现用gridview不能实现这样的效果,所以就想到了RecyclerView,确实是一个很好的控件。和大家分享一下。 效果图 ? ?...回收重用一个View的时候,LayoutManager会向适配器请求新的数据来替换旧的数据,这种机制避免了创建过多的View和频繁的调用findViewById方法(与ListView原理类似)。..." <android.support.v7.widget.RecyclerView android:id="@+id/rv" android:background="#FFFFFF...Activity的代码 RvAdpter.java package cn.bluemobi.dylan.recyclerviewdemo; import android.content.Context

1.4K10

常用Android布局文件优化技巧总结

在布局文件,可以定义各种视图元素, TextView、Button、ImageView 等。每个视图元素都可以设置一些属性,宽度、高度、边距、背景颜色等。...传统的列表布局一般使用 ListView GridView,但这些视图容器在性能和灵活性方面存在一定的问题。...RecyclerViewAndroid 的一种新型视图容器,可以帮助我们更高效地处理列表数据。...与传统的 ListView 和 GridView 相比,RecyclerView 具有更好的性能、更高的灵活性和更好的交互效果。...使用 Lint 来检查布局文件的问题。 在编写布局文件时,我们可能会遇到一些常见的问题,布局文件过大、布局文件层次结构过深、布局文件加载时间过长等。

20220

Android-Recyclerview常用总结

概述 在android开发我们不可避免的会用到Recyclerview,用以替代之前的ListView,GridView,Gallery等.它是support:recyclerview-v7提供的控件...总结也就一句话:高类聚低耦合.RecyclerView已经标准化ViewHolder,我们自定义的ViewHoler需要继承 RecyclerView.ViewHolder,然后在构造方法初始化控件....- implementation 'com.android.support:recyclerview-v7:26.1.0' 如果只是用到recyclerview控件优先选用此依赖方式 - implementation...'com.android.support:design:26.1.0' 通过添加MD的disign包方式使用该控件,内部包含多种MD控件:SnakeBar, 3.有哪些常用操作?...boolean animateMove():列表项位置移动时调用。 boolean animateChange():列表项数据发生改变时调用。

1.3K30
领券