android 之 RecyclerView (2)

作者: 石头_起航 | 来源:发表于2018-06-27 16:29 被阅读22次

    RecyclerView 上次写的点击事件,在listview里面还有一个长按事件,我们这里也可以写长安事件,方法差不多,看代码。

        //该方法是为了实例化listrner,相当于setOnClickListener
        public void setOnItemLongClickListener(OnItemLongClickListeners listener){
            mOnItemLongClickListeners = listener;
        }
        //定义接口
        public interface OnItemLongClickListeners{
            void onItemLongClick(View view,int position);
        }
        @Override
        public boolean onLongClick(View v) {
            Integer position = (Integer) v.getTag();
            if (position!=null) {
                if (mOnItemLongClickListeners!=null) {
                    mOnItemLongClickListeners.onItemLongClick(v,position);
                }
            }
            return true;//注意一下  返回true短时点击就没作用了
        }
    

    方法和之前的基本一致,有几个地方需要注意一下,设置监听别忘了,不然没有效果,还有就是最后return哪里 一定注意 返回TRUE代表短时间点击事件没有作用,如果是false代表短时间点击还有作用,这样就会造成冲突,长安事件响应后另一个也响应。所以这里需要注意一下。

    RecyclerView 滚动事件的监听

      mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
                @Override
                public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                    super.onScrollStateChanged(recyclerView, newState);
                }
                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);
                    if (!recyclerView.canScrollVertically(-1)) {//到顶部
                        Toast.makeText(Main4Activity.this, "当前是顶部", Toast.LENGTH_SHORT).show();
                    } else if (!recyclerView.canScrollVertically(1)) {//到底部
                        pageIndex++;
                        Toast.makeText(Main4Activity.this, "下一页" + pageIndex, Toast.LENGTH_SHORT).show();
    
                    }
                }
            });
    
    

    这样可以实现上滑加载,但是没有动画效果,如果你想有一个好看的动画效果,还想简单,那么我给你推荐一个啊很简单的动画效果实现简单好用,动画效果还多。

    RecycleView项之间的距离

    public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
        private int space;
        public SpaceItemDecoration(int space) {
            this.space = space;
        }
        @Override
        public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
            if(parent.getChildPosition(view) != 0)
                outRect.top = space;//可以上下左右
        }
    }
    

    使用:

       SpaceItemDecoration spaceItemDecoration = new SpaceItemDecoration(200);
            mRecyclerView.addItemDecoration(spaceItemDecoration);
    

    具体使用丢个链接吧ItemDecoration分割线
    还有动画,单个更新全部更新

    相关文章

      网友评论

        本文标题:android 之 RecyclerView (2)

        本文链接:https://www.haomeiwen.com/subject/ltobyftx.html