2-VII-RecyclerView事件

简介: [1].本文接上文:RecyclerView基本使用 [2].RecyclerView把很多事都交给了我们,就连item的点击事件都没有[3].在adapter中加载布局的时候,可以为item添加事件[4].

[1].本文接上文:RecyclerView基本使用
[2].RecyclerView把很多事都交给了我们,就连item的点击事件都没有
[3].在adapter中加载布局的时候,可以为item添加事件
[4].没有点击效果,还要自己添加点击的选择器
[5].RecyclerView增删条目以及条目运动效果


一、点击事件

方式1.修改:FirstRvAdapter#onCreateViewHolder
public FirstViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //加载布局文件
    View itemView = LayoutInflater.from(mCtx).inflate(R.layout.item_rv, null);
    final FirstViewHolder holder = new FirstViewHolder(itemView);
    //点击监听
    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ToastUtil.showAtOnce(mCtx, "Position:"+holder.getLayoutPosition());
        }
    });
    return holder;
}
方式2:可以添加回调,将事件推到Activity中
1.FirstRvAdapter中监听点击事件

    public FirstViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
        //加载布局文件
        final View itemView = LayoutInflater.from(mCtx).inflate(R.layout.item_rv, null);
        final FirstViewHolder holder = new FirstViewHolder(itemView);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mOnItemClickListener != null) {
                    mOnItemClickListener.onclick(itemView, parent, holder.getLayoutPosition());
                }
            }
        });
        return holder;
    }

    /////////////////////条目点击监听/////////////////////////////////////
    public interface OnItemClickListener {
        void onclick(View itemView, ViewGroup parent, int position);
    }

    private OnItemClickListener mOnItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        mOnItemClickListener = onItemClickListener;
    }
2.Activity中使用:
mAdapter.setOnItemClickListener(new FirstRvAdapter.OnItemClickListener() {
    @Override
    public void onclick(View itemView, ViewGroup parent, int position) {
        ToastUtil.showAtOnce(DiverRVActivity.this, mData.get(position));
    }
});
rv点击1.gif

二、背景选择器

添加点击效果:可以自定义选择器

为item的背景添加:安卓自带波纹样式的选择器

//有边界
android:background="?android:attr/selectableItemBackground"
//无边界
android:background="?android:attr/selectableItemBackgroundBorderless"
rv点击2.gif
也可以自定义水波纹的样式:

v21及以上有效果

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/gray"><!-- press和水波纹的颜色 -->
    <item>
        <!--item中可以自定义shape-->
        <shape
            android:innerRadius="5dp"
            android:shape="rectangle">
            <solid android:color="@color/white"/>
            <corners android:radius="1dp"/>
        </shape>
    </item>
</ripple>

v21以下无效果

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/colorPrimaryDark" android:state_pressed="true"/>
    <item android:drawable="@color/colorPrimary"/>
</selector>

三、添加与删除:效果是单机添加,长按删除

1.FirstRvAdapter中照样子添加长按监听:
    /////////////////////条目长按监听/////////////////////////////////////
    public interface OnItemLongClickListener {
        void onLongClick(View itemView, ViewGroup parent, int position);
    }

    private OnItemLongClickListener mOnItemLongClickListener;

    public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) {
        mOnItemLongClickListener = onItemLongClickListener;
    }
2.FirstRvAdapter添加删除与添加方法:
    /**
     * 添加item
     *
     * @param i 位置
     * @param str 值
     */
    public void addData(int i, String str) {
        data.add(i, str);
        notifyItemInserted(i);//刷新数据
    }

    /**
     * 删除item
     *
     * @param i 位置
     */
    public void deleteData(int i) {
        data.remove(i);
        notifyItemRemoved(i);//刷新数据
    }

3.Activity中使用:
mAdapter.setOnItemClickListener(new FirstRvAdapter.OnItemClickListener() {
    @Override
    public void onclick(View itemView, ViewGroup parent, int position) {
        mAdapter.addData(position, ZRandom.randomCnName());
        mRecyclerView.scrollToPosition(0);//滑动到某个条目
    }
});

mAdapter.setOnItemLongClickListener(new FirstRvAdapter.OnItemLongClickListener() {
    @Override
    public void onLongClick(View itemView, ViewGroup parent, int position) {
        mAdapter.deleteData(position);
    }
});
增加与删除.gif

后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力

2.连接传送门:

更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

3.联系我

QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328

4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
公众号.jpg
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
【AI系统】AI在不同领域的应用与行业影响
本文探讨了人工智能在计算机视觉、自然语言处理及音频处理等领域的广泛应用,并展示了其在自动驾驶、安全监控、搜索引擎优化、客户服务、语音识别及多个行业的革新作用,强调了AI基础设施与系统创新对未来社会的影响与价值。
1412 1
|
10月前
|
供应链 NoSQL Java
用Redisson写一个库存扣减的方法
通过本文的介绍,我们详细讲解了如何使用Redisson实现一个简单的库存扣减功能。通过使用分布式锁,可以确保库存扣减操作的原子性和高效性。希望本文能帮助您更好地理解和应用Redisson,构建高效、可靠的库存管理系统。
386 15
|
10月前
|
存储 人工智能
Scaling Law或将终结?哈佛MIT预警:低精度量化已无路可走,重磅研究掀翻AI圈
哈佛大学和麻省理工学院的研究人员最近发布了一项重磅研究,对Scaling Law在低精度量化中的应用提出严重质疑。研究表明,随着训练数据增加,低精度量化带来的性能损失也增大,且与模型大小无关。这挑战了通过增加规模提升性能的传统观点,提醒我们在追求效率时不能忽视性能损失。该研究结果在AI圈内引发广泛讨论,提示未来需探索其他方法来提高模型效率,如混合精度训练、模型压缩及新型硬件架构。论文地址:https://arxiv.org/pdf/2411.04330。
294 11
|
数据采集 DataWorks 搜索推荐
阿里云DataWorks深度评测:实战视角下的全方位解析
在数字化转型的大潮中,高效的数据处理与分析成为企业竞争的关键。本文深入评测阿里云DataWorks,从用户画像分析最佳实践、产品体验、与竞品对比及Data Studio公测体验等多角度,全面解析其功能优势与优化空间,为企业提供宝贵参考。
543 13
|
人工智能 自然语言处理 数据挖掘
产品更新|宜搭AI 新增「智能数据分析」「智能表单」两项功能!
「宜搭AI」开放新一期功能:智能数据分析、智能表单,已支持在宜搭网页端使用体验。
910 0
产品更新|宜搭AI 新增「智能数据分析」「智能表单」两项功能!
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
265 4
|
SQL 存储 关系型数据库
MySQL中的数据备份与还原(导出导入)实践总结
MySQL中的数据备份与还原(导出导入)实践总结
899 1
|
人工智能 自然语言处理 搜索推荐
人工智能与教育:个性化学习的未来
【10月更文挑战第31天】在科技飞速发展的今天,人工智能(AI)正深刻改变教育领域,尤其是个性化学习的兴起。本文探讨了AI如何通过智能分析、个性化推荐、智能辅导和虚拟现实技术推动个性化学习,分析了其带来的机遇与挑战,并展望了未来的发展前景。
|
人工智能 缓存 搜索推荐
OPENAI DevDay 2024:推动AI技术的新边界
在今年的OPENAI DevDay活动中,尽管形式更为低调,但OpenAI依然带来了四项令人瞩目的技术创新,展示了其在推动人工智能开发者生态方面的持续努力,以及向更高效、用户友好的AI工具转型的决心。我将为大家详细介绍这些新产品
656 10
|
人工智能 自然语言处理 安全
Gemini 人工智能:谷歌AI重磅来袭!好消息,国内可用
Gemini 是 Google 🧠 开发的革命性人工智能模型,旨在打造一个功能强大的多模态 AI 系统。