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" 阅读详情

相关推荐

Windows 11 的C盘User(用户)文件夹下的用户文件夹名称的修改

背景介绍:由于系统重装导致Windows 11的系统用户名与C盘User(用户)文件夹下的用户名文件夹(公用文件夹旁边的文件夹)出现名称不一致,事例中系统用户名命名为“寂萧”,User(用户)文件夹下的文件夹名称却是“77555”。【QQ邮箱前五位真的真的看着很别扭】注:改名有风险,三思而后行。User(用户)文件夹下的用户名是中文在某些软件的应用场景下产生不便,导致很多软件莫名其妙报错,甚至无法使用,笔者不建议修改为中文名。//和笔者一样的强迫症除外//

2302_79084172的博客 10万+

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

从理论到实践:TRL去嵌入校准在国产矢量网络分析仪上的应用全解析

本文全面解析了TRL去嵌入校准技术在国产矢量网络分析仪上的应用实践,从核心算法到工程实现。详细介绍了TRL校准的数学原理、国产VNA的程控接口开发、校准件质量评估及测量不确定度控制策略,帮助工程师掌握高频器件测量的关键技术。

tech5的博客 1014

RecyclerView多条目实现

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

LazyRui 462

统信UOS上Qt5.12.8离线安装保姆级教程(避坑网络登录与GCC选择)

本文提供统信UOS系统下Qt5.12.8离线安装的完整教程,涵盖环境准备、安装步骤、常见问题解决及开发优化建议。特别针对无网络环境下的登录验证跳过、GCC版本匹配等关键问题提供解决方案,帮助开发者快速搭建稳定的Qt开发环境。

weixin_30666401的博客 462

妙算(manifold-2G)通过网线连接笔记本实现静态ip上网

本质就是共享笔记本wifi,配置以太网静态ip,然后在工控机上连接

slender_1031的博客 904

RecyclerView条目多样式显示

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

xiyangyang8110的博客 815

Codex全网避坑实录|境外手机号封禁\+Ollama千问适配失败\+第三方中转站TOML全套配置

原生Codex:国内手机号百分百无法登录,PIN验证、多因子验证全部无效,不用尝试API Key登录:仅解锁界面,不充值无法使用功能,纯过渡方案Ollama本地千问:原生接口和Codex不兼容,手写Python代理大概率调试失败,不推荐折腾网页解析失败:只改wire_api为responses即可解决,无需修改接口地址使用建议:仅体验功能用中转站;长期办公提效,成本很高,建议改用兼容接口的本地模型。

驽马不舍 1907

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

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

Qxnedy的博客 906

PCL ——LevenbergMarquardt非线性最小二乘法拟合圆柱(C++详细过程版)

使用C++详细过程版实现的LevenbergMarquardt非线性最小二乘法拟合圆柱

点云侠的博客 607

Python 爬虫实战:豆瓣电影海报批量获取(Top250 榜单 + 可视化展示)

在信息爆炸的时代,数据已成为决策的核心,而数据的获取是数据分析的第一步。本文将详细介绍如何利用 Python 爬虫获取豆瓣电影 Top250 榜单的海报,并对数据进行可视化展示,助你更好地了解电影市场的趋势和用户的喜好。

yansideyucsdn的博客 719

RecyclerView 多条目展示

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

llihao 281

【100%通过率】华为OD机试真题 Python 实现【字符串重新排列】【2022.11 Q4新题】

给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出: 1、单词内部调整:对每个单词字母重新按字典序排序 2、单词间顺序调整: 1)统计每个单词出现的次数,并按次数降序排列 2)次数相同,按单词长度升序排列 3)次数和单词长度均相同,按字典升序排列 请输出处理后的字符串,每个单词以一个空格分隔。

MISAYAONE的博客 7982

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

假人有限元模型

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

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

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

_万能的博哥的博客 941

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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、付费专栏及课程。

余额充值