RecyclerView展示多条目

RecyclerView实现多条目展示 敲我们的多条目呢,首先做好准备工作,比如:导入我们的网络工具类 https://blog.youkuaiyun.com/mingxiangzhimin/article/details/85112424 好啦,开始啦 Bean类 package com.qh.***.recyclerviewmore.bean; import java.util.List; public class Root { ... 阅读详情

依赖:

dependencies {
    compile 'com.android.support:recyclerview-v7:26.1.0'
    //    okhttp
    compile 'com.squareup.okhttp3:okhttp:3.3.0'

//   解析Gson
    compile 'com.google.code.gson:gson:2.4'

//  图片加载Glide
    compile 'com.github.bumptech.glide:glide:3.7.0'
    }

适配器

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    public final String goods_url = "http://365jia.cn/uploads/";
    public final int TYPE_ONE = 0;
    public final int TYPE_TWO = 1;
    List<GoodsBean.DataBeanX.DataBean> data;
    Context context;
    private MyLongItemClick onLongItemClick;

    public MyAdapter(List<GoodsBean.DataBeanX.DataBean> data, Context context) {
        this.data = data;
        this.context = context;
    }

    @Override
    public int getItemViewType(int position) {
//        根据集合内图片个数设置多条目
        int size = data.get(position).getPics().size();
        Log.d("MyAdapter-----", "size:" + size);
        if (size == 1) {
            return TYPE_ONE;
        } else if (size == 3) {
            return TYPE_TWO;
        }
        return 0;

    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//        根据viewType选择多条目初始化布局
        if (viewType == TYPE_ONE) {
            Log.d("MyAdapter", "条目一");
            View view = View.inflate(context, R.layout.layout_recycler_1, null);
            return new MyViewHolder(view);
        } else if (viewType == TYPE_TWO) {
            Log.d("MyAdapter", "条目二");
            View view1 = View.inflate(context, R.layout.layout_recycler_2, null);
            return new MyViewHolder1(view1);
        }
        return null;

    }

    private static final String TAG = "MyAdapter----";

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
        if (holder instanceof MyViewHolder) {

            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    onLongItemClick.onItemLongClick(v, position);

                    return true;
                }
            });

            Log.d(TAG, "onBindViewHolder: " + ((MyViewHolder) holder).title1);
            ((MyViewHolder) holder).title1.setText(data.get(position).getTitle());

            Glide.with(context).load(goods_url + data.get(position).getPics().get(0)).into(((MyViewHolder) holder).image1);

//-----------------------------------------------------------------------------------
            //属性动画透明
            ((MyViewHolder) holder).image1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //属性动画透明
                    ObjectAnimator alpha = ObjectAnimator.ofFloat(((MyViewHolder) holder).image1, "alpha", 1, 0, 1);

                    alpha.setDuration(2000);
                    alpha.start();

                }
            });

//-----------------------------------------------------------------------------------------------

        }
        if (holder instanceof MyViewHolder1) {

            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    onLongItemClick.onItemLongClick(v, position);

                    return true;
                }
            });

            ((MyViewHolder1) holder).title2.setText(data.get(position).getTitle());
//            拼接图片地址
            Glide.with(context).load(goods_url + data.get(position).getPics().get(0)).into(((MyViewHolder1) holder).image2_1);
            Glide.with(context).load(goods_url + data.get(position).getPics().get(1)).into(((MyViewHolder1) holder).image2_2);
            Glide.with(context).load(goods_url + data.get(position).getPics().get(2)).into(((MyViewHolder1) holder).image2_3);
        }
    }

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


    class MyViewHolder extends RecyclerView.ViewHolder {


        public final TextView title1;
        public final ImageView image1;


        public MyViewHolder(View itemView) {
            super(itemView);

            title1 = itemView.findViewById(R.id.recy_1_title);
            image1 = itemView.findViewById(R.id.recy_1_image);

        }

    }


    class MyViewHolder1 extends RecyclerView.ViewHolder {

        private final TextView title2;
        private final ImageView image2_1;
        private final ImageView image2_2;
        private final ImageView image2_3;

        public MyViewHolder1(View itemView) {
            super(itemView);

            image2_1 = itemView.findViewById(R.id.recy_2_image1);
            title2 = itemView.findViewById(R.id.recy_2_title);
            image2_2 = itemView.findViewById(R.id.recy_2_image2);
            image2_3 = itemView.findViewById(R.id.recy_2_image3);

        }

    }

    //长按监听
    public interface MyLongItemClick {
        void onItemLongClick(View view, int postion);
    }

    //外部调用
    public void setOnLongItemClick(MyLongItemClick onLongItemClick) {
        this.onLongItemClick = onLongItemClick;
    }

}

主界面

public class MainActivity extends AppCompatActivity implements IMainView {

    private RecyclerView mMyrecycler;
    private MyAdapter myadapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

        PresenterImpl presenter = new PresenterImpl();
        presenter.showGoodsToView(new ModleImpl(),this);

//        创建布局管理器
        LinearLayoutManager layoutManager = new LinearLayoutManager(this );
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//      设置recyclerview
        mMyrecycler.setLayoutManager(layoutManager);

    }

    @Override
    public void showGoodsList(final List<GoodsBean.DataBeanX.DataBean> data) {
        Toast.makeText(this, "data.size():" + data.size(), Toast.LENGTH_SHORT).show();
        myadapter = new MyAdapter(data,this);
        mMyrecycler.setAdapter(myadapter);
//      设置长按点击
        myadapter.setOnLongItemClick(new MyAdapter.MyLongItemClick() {
            @Override
            public void onItemLongClick(View view, final int postion) {

                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("确定要删除?");
                builder.setNegativeButton("取消", null);
                builder.setNeutralButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        data.remove(postion);
                        myadapter.notifyDataSetChanged();

                    }
                });

                builder.show();

            }
        });

//        添加分割线
        mMyrecycler.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
    }

    private void initView() {
        mMyrecycler = (RecyclerView) findViewById(R.id.myrecycler);
    }
}

条目
这里写图片描述
这里写图片描述

自定义点击事件

//    内部调用
    public interface HistroyRecycListener{
        void onItemClick(int position);
    }
//    外部调用
    public void setOnRecycListener(HistroyRecycListener histroyRecycListener){
        this.histroyRecycListener = histroyRecycListener;
    }
RecyclerView展示固定数据、上拉加载更多、下拉刷新、点击事件、长按点击事件、删除条目、刷新条目、添加条目、多条目加载 1、依赖:    implementation 'com.android.support:recyclerview-v7:27.0.2' 2、activity_main、     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools" 阅读详情

相关推荐

[EDA系列]二、Altium Designer异形封装实战:从CAD导入到PCB布局

本文详细介绍了在Altium Designer中实现异形封装的实战流程。通过五步核心操作,将CAD软件中的复杂二维轮廓精准导入并转换为可直接用于PCB布局的智能封装,解决了不规则形状铺铜的难题,特别适用于射频天线、传感器外壳等对机械尺寸有严苛要求的设计场景。

weixin_29194817的博客 144

RecycleView实现多条目

适配器类 package test.com.bwie.yuekao.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; imp

SongCongCong_scc 596

CTF实战:Flask Session流量解密与内存马路由追踪

本文通过一道CTF实战题目,详细解析了Flask Session流量解密与内存马路由追踪的全过程。文章从破解前端加密密码入手,逐步揭示如何利用泄露的SECRET_KEY解密Session,发现命令执行痕迹,并最终追踪到攻击者植入的内存马路由。内容涵盖Wireshark流量分析、flask-unsign工具使用等实战技巧,为CTF选手和安全研究人员提供了一套完整的Flask应用安全分析思路。

weixin_28309571的博客 308

RecyclerView多条目实现

RecyclerView多条目实现 1、自定义类继承RecyclerView.Adapter<RecyclerView.ViewHolder> 这里做两个条目的例子 public class 类名 extends RecyclerView.Adapter<RecyclerView.ViewHolder> { } 2、自定义类继承RecyclerView.ViewHolde...

LazyRui 462

【硬件设计】_基于STM32单片机的智能台灯系统

智能台灯系统是一款多功能的智能照明设备,能够自动调节亮度、监测人体活动、感知环境光照,并具备定时和报警功能,极大提升了用户体验与功能的灵活性,主要包括以下功能:系统提供自动和手动两种模式以调节台灯亮度。在自动模式下,台灯会根据周围光强智能调整;而在手动模式下,用户可通过按键自行设置亮度。利用红外光电开关检测台灯与用户之间的距离,若距离过近,系统将发出报警提示。通过时钟模块设置定时提醒,并在OLED显示屏上显示当前时间,当达到设定的定时时间时,蜂鸣器将发出报警音。

2401_85381181的博客 1732

GD32单片机引脚复用指南:如何让JTAG接口的PA15/PB3发挥第二功能?

本文详细介绍了GD32F103Cx系列单片机如何通过AFIO模块进行引脚复用,特别是将默认用于JTAG调试接口的PA15、PB3等引脚释放为普通IO或复用功能引脚。文章从原理出发,结合代码实践,讲解了如何配置调试端口重映射,将JTAG引脚安全地转换为GPIO或定时器通道,并提供了常见问题排查与最佳实践,帮助开发者高效利用有限的引脚资源。

nept的博客 810

RecyclerView条目多样式显示

原理: 使用FilmReviewInfo的coverImgType字段进行条目类型判断,适配器FilmReviewAdapter的getItemViewType方法返回不同的条目供onCreateViewHolder进行呈现 MainActivity package com.fkm.recyclerviewmultitype; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.Grid.

xiyangyang8110的博客 815

手把手配置:用Synopsys VDK为英飞凌TC4x系列MCU做虚拟原型开发

本文详细介绍了如何使用Synopsys VDK为英飞凌TC4x系列MCU进行虚拟原型开发,涵盖开发环境搭建、关键外设虚拟化配置、AUTOSAR栈集成及虚拟调试与性能调优全流程。通过虚拟原型技术,开发者可提前6-12个月启动软件开发,显著提升汽车电子项目的开发效率。

weixin_30606461的博客 292

RecyclerView的使用(多类型条目的使用)

使用RecyclerView,activity之间传递复杂数据

Qxnedy的博客 906

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(1)

本文详细分析了Vortex RISC-V内核6级流水线中Execute阶段的SFU(特殊功能单元)模块。重点介绍了SFU的数据流结构,包含dispatch_unit、pe_switch、csr_unit、wctl_unit和gather_unit五个子模块。文章深入解析了warp控制指令wspawn和tmc的实现机制:wspawn用于激活指定数量的warp并设置新PC值,tmc则用于控制线程掩码和warp状态。通过C代码和汇编指令的对照分析,阐明了这些指令在并行计算中的关键作用,包括线程激活、状态切换和执行

weixin_55313207的博客 1363

筑牢上线前安全防线:安全运维服务中的检测实践与深化

在日益严峻的网络安全形势下,将漏洞扫描、渗透测试和基线核查有机结合的上线前安全检测,是保障信息系统安全、稳定、合规上线的基石。通过专业、严谨、协作的检测实践,乙方安全团队能够有效协助甲方在系统生命周期的起点就构筑起坚固的安全防线,为业务的顺利开展和用户的信任保驾护航,真正实现“安全赋能业务”的价值。这道“守门人”的职责,是数字时代企业稳健前行的不可或缺的保障。专业的安全服务提供商(乙方)需要与甲方(系统所有者/运营方)建立紧密、透明、协作的伙伴关系,实现风险的闭环管理,甚至推动甲方安全能力的长期提升。

huluang的专栏 184

RecyclerView 多条目展示

首先开始写代码之前,要做好万全的准备工作 1.依赖 2.网络权限 3.搭框架 现在开始正式写代码了,完成以上的准备工作,现在开始按照步骤一步一步慢慢来,要是因为着急少些了某一步的话,整个项目就会白板甚至是崩溃 1.V层 public interface MainView { void success(String data); void fail(); } ...

llihao 281

可维护的 SAP UI5 Theming 策略:从 CSS 级联与特性选择器到 UI Theme Designer 的工程化落地

摘要:SAP UI5主题化是一个涉及CSS级联、选择器特异性和主题参数的系统工程,与应用逻辑解耦以实现品牌化和无障碍适配。轻量级调整优先使用附加CSS,重大改动才考虑创建新主题。样式冲突需通过特异性原则解决,避免滥用!important。动态添加样式应使用addStyleClass而非直接操作DOM。主题可通过bootstrap参数、URL或运行时API设置,企业级主题推荐使用UI Theme Designer。自定义内容应消费主题变量以实现一致性,避免直接修改控件内部结构或内联样式。工程化落地需规范分层和

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 307

RecyclerView多条目展示

废话不多说,直接上Adapter的代码package com.example.week3_demo1;import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android

王志伟的博客 585

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OkHttp+RecyclerView多条目展示数据

先看效果再看代码导入依赖compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.squareup.okhttp3:okhttp:3.9.0'implementation files('libs/gson-2.3.1.jar')compile files('libs/universal-image-loader-1.9.3....

zhang1223665986的博客 308

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Recyclerview控件使用,多条目展示介绍,Recyclerview点击事件(单击、长按[删除])。

RecylerView: RecyclerView是support-v7包中的新添加控件,是一个强大的滑动展示控件; 适配器:RecylerView自带适配器,继承RecylerView.Adapter即可,自定义ViewHolder传给适配器泛型; 多条目展示:多条目展示也就是分开了几种条目类型,重写getItemViewType(),定义俩个常量控制条目切换; 点击事件(单击、长按)...

_万能的博哥的博客 941

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android Studio OkHttp+RecyclerView多条目展示数据

Android Studio OkHttp+RecyclerView多条目展示数据 使用到了Gson-2.3.1  okhttp:3.9.0 recyclerview-v7:26.1.0 导入依赖 compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.squareup.okhttp3:okhttp:3.9.0'...

智轩软件的专栏 930

RecyclerView(BRVAH)+接口回调多条目展示

1. implementation 'com.hyman:flowlayout-lib:1.1.2' implementation 'com.jcodecraeer:xrecyclerview:1.5.9' 2.布局 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;LinearLayout xmlns:android=&quot;

qq_43040588的博客 576

列表展示:RecyclerView多条目

布局========================================================================activit_main===============&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;android.support.constraint.ConstraintLayout xmlns:...

NIJIADALINGE的博客 914

RecyclerView 原生解析 多条目展示

package com.example.week01_02.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; i...

表叔很ok的博客 228

RecyclerView的多条目展示

本技术博客来自 http://blog.youkuaiyun.com/qq_35353487 在项目中基本上都会用到的 多种item(条目)的加载 比如大家常见的app( app的新闻的列表,app的新闻列表) 都是采用了加载多种item的布局 我们先来看一下效果. 这是一张来自 今日头条的新闻界面 我们今天就按着这个界面的布局来写 . 首先看这个界面 分为三部分 第一条item 是加载的大图片,第

SXS120730的博客 669

RecyclerView的多条目展示,使用OkHttp解析数据

//加依赖 compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.android.support:recyclerview-v7:25.3.1'//主页面public class MainActivity extends AppCompatActivity { private RecyclerView my_recycler;

zhao__na的博客 913

Okhttp展示实现MVP展示RecyclerView多条目数据

主适配器 package com.bwei.heji.zlsj.Adpeter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.GridLayoutManager; import android.support.v7.wid...

weixin_43915066的博客 226
上一篇: 流式布局清空历史搜索
下一篇: 转义字符 ANDROID STRINGS.XML 中的特殊字符转义
user_app
博客等级 码龄9年 7粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值