android 之 RecyclerView (2)

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))