RecyclerView多布局的简单使用

为RecyclerView的不同item项实现不同的布局(添加分类Header) 最近在做一个应用的时候,需要为GridLayoutManager添加头部header,然后自然而然就想到了用不同的itemType去加载不同的布局。 1.实现多item布局,用不同的itemType去加载不同的布局。     主要思路就是先定义好标识itemType的常量,然后重写getItemViewType()方法,根据不同的位置(position)返回不同的Type,接着在onC 阅读详情

RecyclerView多布局的简单

   RecyclerView 是在Android5.0之后推出的,是一个比ListView更加灵活更加高效的适配器类型控件。但是RecyclerView不同于其他类型的适配器,它还需要一个LayoutManager进行页面控制展示。RecyclerView提供了三种布局管理器:
  1、LinearLayoutManager:线性布局管理器,支持水平和垂直效果。
  2、GridLayoutManager:网格布局管理器,支持水平和垂直效果。
  3、StaggeredGridLayoutManager:分布型管理器,瀑布流效果

RecyclerView的使用:
  1、引入RecyclerView依赖包,V7下的,兼容到API17.
  2、在xml布局中声明,在Java代码中初始化。
  3、设置布局管理器
  4、创建适配器,设置数据源,绑定适配器
    具体创建适配器:①创建一个类,继承RecyclerView.Adapter<ViewHolder>.
            ②创建一个类ViewHolder,继承RecyclerView。VIewHolder,该类需要创建一个匹配父类的构造。
            ③重写适配器中的方法:getItemCount():获取数据源的个数(item的数量);onCreateViewHolder():该方法中导入布局,实例化VIewHolder;onBindViewHolder():绑定VIewHolder,加载数据。

注意一点:RecyclerView的LinearLayoutManager不同于一般的适配器的布局,RecyclerView的item最外层的布局参数是有效的,如高度宽度等,所以在使用的时候,第一种方法是在导入View的时候指定没有parent(不推荐使用),第二种方法是在item布局的最外层指定具体的参数。
RecyclerView 为开发者提供了强大的复用机制,但是所有的点击事件都丢了,没有提供默认的点击事件,所以需要我们自己为RecyclerView手动实现点击。

 

多布局在JSON文件中一般有明确的区分,例如通过Type=1,2,3,4,等方式进行区分,Type=1,说明是一种类型的布局!

RecyclerView的使用场景:

多种样式的列表。

宫格和列表同时存在

分类列表(比如通讯录)

多布局的重点:

1、       复写getItemViewType(int position)

根据各个position的位置,返回不同的类型。

2、       处理getItemCount

3、       按照返回的类型处理onCreateViewHolder和onBindViewHolder方法

RecyclerView多种布局原理和机制::

     多种布局保存!

RV中的关键成员:

     Type <-   getItemViewType(int position)

     RecyclerView.Holder

     RecyclerView.Recycler

Recycler中保存了一些缓存机制(类上与ListView中的conVertView)

多布局的设计流程

滚动 ----àgetItemViewType(position)------à根据Type寻找Holder-------àif(寻找Holder时返回null)-----àadpter.createViewHolder-----à否则adapter.bindViewHolder.

getItemViewType

     ItemType保存在Holder中

     Holder根据position被缓存在cache中

     遍历缓存中的Holder,如果Type一致就返回。

当我们需要重复使用的时候,系统会在cache里面拿holder,进而实现使用流畅。

和ListView的区别

1.   type已经是Holder的成员

2.   RecyclerView的缓存单位是Holder而不在是View

3.   RecyclerPool的缓存key是type

getItemViewtype(intposition)中的Type,只需要一个数字,不一定是连续的数字。

 

    

     代码实现以及说明:

导入compile 'com.android.support:recyclerview-v7:26.+'

RecyclerView的依赖

DataModle:

   package com.example.jash.recyclerview_more;

import java.io.Serializable;
public class DataModel implements Serializable {
    public static final int TYPE_ONE = 1;
    public static final int TYPE_TWO = 2;
    public static final int TYPE_THREE = 3;
    public int type;
    public int avatarColor;
    public String name;
    public String Content;
    public int contentColor;
}
 
三个布局的XML:
First:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:gravity="center"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/avatar"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginLeft="20dp" />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        tools:text="aaaaa" />
</LinearLayout>
Two:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:gravity="center"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/zuozhe"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginLeft="20dp" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            tools:text="aaaaa" />

        <TextView
            android:id="@+id/content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            tools:text="aaaaa" />
    </LinearLayout>
</LinearLayout>
Three:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="60dp">

    <ImageView
        android:layout_alignParentLeft="true"
        android:id="@+id/avatar"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_centerVertical="true" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/avatar"
        android:orientation="vertical">

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            tools:text="aaaaa" />

        <TextView
            android:id="@+id/content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            tools:text="aaaaa" />
    </LinearLayout>

    <ImageView
        android:id="@+id/contentImage"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"/>
</RelativeLayout>
    抽象ViewHolder
import android.support.v7.widget.RecyclerView;
import android.view.View;
public abstract class TypeAbstrHolder extends RecyclerView.ViewHolder {

    public TypeAbstrHolder(View itemView) {
        super(itemView);
    }
    public abstract void bindHolder(DataModel model);
}
三个ViewHolder 继承抽象ViewHolder
First:
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class TypeOneViewHolder extends TypeAbstrHolder {
    public ImageView avatar;
    public TextView name;

    public TypeOneViewHolder(View itemView) {
        super(itemView);
        avatar = (ImageView) itemView.findViewById(R.id.avatar);
        name = (TextView) itemView.findViewById(R.id.name);
        itemView.setBackgroundColor(Color.GREEN);
    }

    @Override
    public void bindHolder(DataModel model) {
        avatar.setBackgroundResource(model.avatarColor);
        name.setText(model.name);
    }

}
Two:
import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class TypeTwoHolder extends TypeAbstrHolder {
    private ImageView zuozhe;
    private TextView name;
    private TextView content;

    public TypeTwoHolder(View itemView) {
        super(itemView);
        zuozhe = (ImageView) itemView.findViewById(R.id.zuozhe);
        name = (TextView) itemView.findViewById(R.id.name);
        content = (TextView) itemView.findViewById(R.id.content);
        itemView.setBackgroundColor(Color.BLACK);
    }

    @Override
    public void bindHolder(DataModel model) {
        zuozhe.setBackgroundResource(model.avatarColor);
        name.setText(model.name);
        content.setText(model.Content);
    }
}
three:
import android.graphics.Color;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class TypeThreeViewHolder extends TypeAbstrHolder {
    private ImageView avatar;
    private TextView name;
    private TextView content;
    private ImageView contentColor;

    public TypeThreeViewHolder(View itemView) {
        super(itemView);
        avatar = (ImageView) itemView.findViewById(R.id.avatar);
        name = (TextView) itemView.findViewById(R.id.name);
        content = (TextView) itemView.findViewById(R.id.content);
        contentColor = (ImageView) itemView.findViewById(R.id.contentImage);
        itemView.setBackgroundColor(Color.GRAY);
    }

    @Override
    public void bindHolder(DataModel model) {
        avatar.setImageResource(model.avatarColor);
        name.setText(model.name);
        content.setText(model.Content);
        contentColor.setBackgroundResource(model.contentColor);
    }
}
RecyclerView的Adapter
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.BrokenBarrierException;
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<DataModel> mList = new ArrayList<>();
    private LayoutInflater inflater;

    protected MyAdapter(Context context) {
        this.context = context;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch (viewType) {
            case DataModel.TYPE_ONE:
                return new TypeOneViewHolder(inflater.inflate(R.layout.one, parent, false));
            case DataModel.TYPE_TWO:
                return new TypeTwoHolder(inflater.inflate(R.layout.two, parent, false));
            case DataModel.TYPE_THREE:
                return new TypeThreeViewHolder(inflater.inflate(R.layout.three, parent, false));
        }
        return null;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ((TypeAbstrHolder) holder).bindHolder(mList.get(position));
    }

    @Override
    public int getItemViewType(int position) {

        return mList.get(position).type;
    }

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

    public void addList(List<DataModel> list) {
        mList.addAll(list);
    }
}
MainActivity:
package com.example.jash.recyclerview_more;

import android.graphics.Rect;
import android.support.v4.view.GravityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecycler;
    private MyAdapter mAdapter;
    int color[] = {android.R.color.holo_orange_dark,
            android.R.color.holo_red_dark,
            android.R.color.holo_blue_bright};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecycler = (RecyclerView) findViewById(R.id.recycler);
        mRecycler.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
        mAdapter = new MyAdapter(this);
        mRecycler.setAdapter(mAdapter);
        initData();
    }

    private void initData() {
        List<DataModel> list = new ArrayList<>();
        for (int i = 0; i < 30; i++) {
            int type;
            if (i < 5 || (i > 15 && i < 20)) {
                type = 1;
            } else if (i < 10 || i > 26) {
                type = 2;
            } else {
                type = 3;
            }

            Log.d("1", "initData: " + String.valueOf(type) + "=====>>>" + i);
            DataModel data = new DataModel();
            data.avatarColor = color[type - 1];
            data.type = type;
            data.name = "name" + i;
            data.Content = "conten" + type;
            data.contentColor = color[type - 1];
            list.add(data);
        }
        mAdapter.addList(list);
    }
}
mainXML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.jash.recyclerview_more.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>
实现的布局!
为列表类的还有三种不同的布局的显示
          
二、如何实现GridView和ListView同时显示!
    MainActivity中:加入代码
final GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);创建一个3列显示的GridView。 
        Log.d("1", "onCreate: " + gridLayoutManager.getSpanCount());
该方法为合并GridView中的列
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
//获取指定position上的itemView的type
                int type = mRecycler.getAdapter().getItemViewType(position);
//如果type==类型为3 的布局 
                if (type == DataModel.TYPE_THREE) {
//获取gridLayoutManager的列数,上面指定为3了,所有将3 合并成1,否则不合并
                    return gridLayoutManager.getSpanCount();
                } else {
                    return 1;
                }
            }
        });
//添加分隔线!
        mRecycler.addItemDecoration(new RecyclerView.ItemDecoration() {
            @Override
            public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
                GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) view.getLayoutParams();
//获取一行中含有多少个 View
                int spanSize = layoutParams.getSpanSize();
// spanIndex ==1   为View的左侧  ==2  为View的右侧
                int spanIndex = layoutParams.getSpanIndex();
                outRect.top = 20;
                if (spanSize != gridLayoutManager.getSpanCount()) {
                   outRect.left=3;
                }
//切记一定要注释掉这行代码!
//                super.getItemOffsets(outRect, view, parent, state);
            }
        });
 
效果图:

             

 

Kotlin RecyclerView实现多布局 Kotlin RecyclerView实现多布局头布局底布局Activity请求数据retrofit2接口 class HomeRvAdapter(val context: Context?) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { var list:ArrayList<Food> = ArrayL... 阅读详情

相关推荐

Android RecyclerView多布局超详细

首先根据你的需求需要几个布局就先定义几个常量,用来表示相对应的布局: 再重写一个getItemViewType()的方法,用来标记在下标为几的时候返回上面对应的常量标记: 还要说明的就是onCreateViewHolder()方法,有几个布局就写几个对应的Holder: 最后就是onBindViewHolder()方法,分别在对应的布局写对应的操作: 全部代码展示: ...

LIXIAONA_1101的博客 1859

使用Recyclerview实现多布局效果

使用Recyclerview实现多布局效果

qq_42500408的博客 4371

Android RecyclerView与泛型 简单实现多布局

RecyclerView简介:谷歌在support v7中,加入了新的控件——RecyclerView,该控件整合了ListView、GridView的特点,而且最大的优点是可以很方便实现瀑布流效果,多布局控制效果等等,因此RecyclerView受到越来越多的开发者重视。引入RecyclerView由于该控件并不在Andorid SDK中的,而是在support v7包中,因此我们要手动添加该控件

FLY346422332的博客 1448

RecyclerView包含多种布局实现

内容:同一个RecyclerView包含多种布局。本例设置了三个不同的布局样式,都在同一个RecyclerView中展示出来。 尾末简要介绍了下GridLayoutManager的setSpanSizeLookup()方法 效果如下: 步骤: 1、定义三种不同布局,用于填充到RecyclerView中 2、加入RecyclerView控件,设置好adapter和数据 3、新建类继承...

Mr_Leixiansheng的博客 4408

RecyclerView 多布局使用

开发中列表布局显示根据数据类型显示不同的布局 使用 BaseMultiItemQuickAdapter 1.实体类 package cn.xxx.bean; import android.text.TextUtils; import com.chad.library.adapter.base.entity.MultiItemEntity; import cn.elevator.con...

yangzongbin的专栏 527

RecyclerView 实现多布局列表

本文介绍了如何使用 RecyclerView 实现多布局列表,并提供了相应的源代码示例。通过对不同类型的列表项进行布局的区分,我们可以更灵活地展示数据,并实现更加丰富多样的列表效果。希望本文能够帮助到你!RecyclerView 是 Android 中常用的列表控件,它能够高效地展示大量的数据,并支持不同的布局类型。你可以根据自己的需求,定义更多不同类型的列表项布局,并在适配器中进行相应的处理。首先,我们需要创建一个用于显示列表项的布局文件。我们将创建两个不同的布局文件,分别用于显示不同类型的列表项。

2301_79366332的博客 637

【RecyclerView】 九、为 RecyclerView 设置不同的布局样式

一、为 RecyclerView 设置不同的布局样式、 二、完整代码、 三、RecyclerView 相关资料、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 3947

保姆级教程:手把手调试PX4Ctrl的油门映射与姿态控制(附ROS节点配置)

本文提供PX4Ctrl的深度调参指南,涵盖油门映射、姿态控制及ROS节点配置等关键环节。通过详细解析PX4控制器的核心逻辑、递归最小二乘法(RLS)参数估计及状态机设计,帮助开发者优化无人机飞控性能。附实战案例与安全调试建议,适合PX4开发者进阶学习。

weixin_30363981的博客 382

RecyclerView的多布局实现

通过学习了RecyclerView的简单使用后,我们不得不讲讲RecyclerView的多布局的实现了,这种用法常见于各种电商类的App。要实现这个效果最主要是复写RecyclerView的适配器里面的getItemViewType()方法,这个方法是根据条件返回Item的类型。不知道你们有没有发现这个方法跟前面那三个方法中的onCreateViewHolder方法的参数viewTyp...

Homjay的博客 2714

西门子博图TIA Portal V18实战:用LAD梯形图快速上手一个电机启停控制程序

本文详细介绍了如何在西门子博图TIA Portal V18中使用LAD梯形图快速实现电机启停控制程序。从项目创建、硬件组态到LAD编程和仿真调试,逐步引导读者掌握PLC编程的核心逻辑,特别适合工业自动化领域的初学者快速上手。

weixin_30617737的博客 691

QMT vs Ptrade:量化交易新手如何根据需求选择券商系统(附实战案例)

本文对比了QMT和Ptrade两大券商量化交易系统的核心差异,帮助量化交易新手根据需求选择合适的平台。QMT适合技术面策略开发,执行效率高;Ptrade则提供全面的财务数据和复杂策略支持。通过实战案例,展示了如何结合两平台优势实现高效量化交易。

weixin_42683394的博客 528

android recyclerview多布局_Android使用RecyclerView实现复杂的多布局效果

引言RecyclerView不只能进行单页面布局,而且可以通过重写adapter中的getItemViewType方法来进行多种View布局,今天就来使用RecyclerView实现复杂的多布局效果。实现一个RecyclerView中嵌套两个RecyclerView的效果,第一个横向滚动的Recycler同时又是纵向RecyclerView的第一个ItemView。话不多说,搞定它!效果...

weixin_39907591的博客 974

【SLAM】探索explore_lite在移动机器人自主建图中的高效边界检测策略

本文深入解析了explore_lite在移动机器人自主建图中的应用,重点探讨了其高效的贪婪边界检测策略。该工具包专为资源受限平台设计,通过直接利用SLAM生成的地图信息,以极低的计算开销实现快速、稳定的未知区域探索,并与move_base导航框架无缝协作,是轻量级机器人自主探索的优选方案。

purple的博客 1067

Android Recyclerview多布局

今天给大家看一个recyclerview多布局的写法,是tablayout是的写法在上一篇文章中,感兴趣的兄弟可以去看看学一学 我们废话不多说,直接上我们最喜欢的代码 添加一下我们的依赖 implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'com.github.bumptech.glide:glide:4.8.0'//glide第三方图片加载所需要的包 然后写我们的recyclerview布局 ..

weixin_53760974的博客 2819

高性能C#上位机:多串口并发,百万数据不卡顿

去年做了一个环境监测项目,要对接32个串口传感器,每个传感器每秒发10条数据,一天下来就是2700多万条数据,之前的老程序跑起来UI直接卡死,数据丢包率高达10%,存到数据库要卡半天,客户要求数据丢包率为0,UI响应延迟≤100ms,百万级数据查询≤1s。这套多串口通信方案已经用在了我们公司10多个项目上,最多支持64个串口同时并发,每秒处理3000条数据,完全不卡顿,数据零丢包,客户非常满意,最近做的一个光伏监测项目,对接了48个串口传感器,稳定运行了6个月,没有出过任何问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 427

wireshark提取视频数据之RTP包中提取H264和H265

本文主要描述从wireshark包数据中提取出H264和H265裸流数据方法,裸流通过RTP封包方式发送,从抓包中直接提取视频流数据,进而进行流媒体问题定位

技术控的笔记 17万+

RecyclerView多布局的简单实现

RecyclerView多布局的简单实现 1.添加依赖: compile 'com.android.support:recyclerview-v7:24.2.1' 2、在mainactivity的xml布局里直接写上recyclerview LinearLayout xmlns:android="http://schemas.android.com/apk/res/

Mr_liu的博客 339

3 路由引入

在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时,A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。表3-1:各种路由协议的优先级。通过路由引入,可以实现路由信息在不同路由协议间传递。

lwljh134的博客 621

Android Recyclerview多布局使用技巧

该文章主要记录,Rv中的多布局使用。 目录 1. 继承自RecyclerView.Adapter实现聊天多布局 SparseArray的学习及使用 2. 使用BRVAH Adapter帮助类实现多布局 1. 继承自RecyclerView.Adapter实现聊天多布局 实现该类多布局,主要是重写了getItemViewType,然后才是根据不同的数据类型去返回各自相对应的Item子...

crazyZhangxl的博客 1157

顶刊论文引言用AI怎么写?借助Gemini 3 Pro结合四段式写出逻辑清晰的Introduction

写研究目标时,先明确研究问题,直接回应前文提到的研究缺口,如 “This study aims to investigate whether X modulates Y via the Z pathway in human cells.”然后再提出你的研究假设,当理论依据清晰时,可以用如 “We hypothesized that inhibiting X would rescue Y deficiency in this model.”的句子点出研究目标。要求:1)明确陈述本研究拟解决的核心科学问题;

智能AI让学术科研更容易 181

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

recyclerview多布局实现

安卓 Android Recyclerview多布局适配 开始 实现目标 代码 布局文件 java文件 点个赞吧,给个关注 开始 好久没有写博客了,不知道会不会有人看见,最近忙着上线项目和维护,哎《《《加班 实现原理就是重写了适配器getItemViewType这个方法,作用是,根据当前是第几个条目,返回不同的布局,如果是网络数据的话,则判断网络数据和自己的条件返回不同的类型即可!! 实现目标 RecyclerView实现列表不同布局,主要看RecyclerviewAdapter来实现,跟我一起做吧!!!

weixin_50302512的博客 939

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

RecyclerView多布局

package module.member.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import andr...

snpmyn 163

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android RecyclerView多布局的实现

主要操作实在Adapter中的。区别于正常RecyclerView的Adapter。首先是定义几个全局的变量来标识有几种布局。public static final int ONE_ITEM = 1; public static final int TWO_ITEM = 2; public static final int THREE_ITEM = 3;然后除了正常的方法之外,还要重写getIte...

Android的专栏 1735

Android RecyclerView 多布局与混排

思路:创建 Activity public class MyRecyleDemo extends AppCompatActivity { private RecyclerView mRecyclerView; private MyRecycleAdapter mAdapter; @Override protected void onCreate(@Nulla

danfengw的博客 1万+

RecyclerView多布局实现

使用RecyclerView实现复杂布局

qq_35970118的博客 486

RecyclerView原生多布局适配器

RecyclerView RecyclerView可替代ListView,RecyclerView有三种布局方式:线性布局,网格布局以及瀑布流 RecylerView去设置多布局也会比ListView简单许多,只需要新添几个ViewHolder以及一个getItemViewType(int position)的方法,在这个方法里面去进行一个判断随后在创建ViewHolder的方法和绑定方法同样去进...

Aquarius_Star的博客 485
上一篇: RecyclerView的使用
下一篇: Android模拟器之神奇Genymotion的安装
JSON_ZJS
博客等级 码龄9年 30粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值