前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2-VII-RecyclerView事件

2-VII-RecyclerView事件

作者头像
张风捷特烈
发布2018-09-29 11:14:44
5970
发布2018-09-29 11:14:44
举报

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

本文由张风捷特烈原创,转载请注明 更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com 你的喜欢与支持将是我最大的动力

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、点击事件
    • 方式1.修改:FirstRvAdapter#onCreateViewHolder
      • 方式2:可以添加回调,将事件推到Activity中
        • 1.FirstRvAdapter中监听点击事件
        • 2.Activity中使用:
    • 二、背景选择器
      • 添加点击效果:可以自定义选择器
        • 也可以自定义水波纹的样式:
    • 三、添加与删除:效果是单机添加,长按删除
      • 1.FirstRvAdapter中照样子添加长按监听:
        • 2.FirstRvAdapter添加删除与添加方法:
          • 3.Activity中使用:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档