天天看点

Android 判断RecyclerView滚动到底部

原创文章,如有转载,请注明出处:http://blog.csdn.net/myth13141314/article/details/60866752

首先看看RecyclerView的简单使用

  • 首先是常见的使用步骤
RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.rlv_recycleview);

//布局管理器,这里是GridView布局,列数为3列
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), );

//或者也可以是LinearLayoutManager
//LinearLayoutManager layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);

//设置布局管理器
recyclerView.setLayoutManager(layoutManager);

//设置适配器
recyclerView.setAdapter(mAdapter);

//添加分割线
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
           
  • 然后是适配器的编写
private class myAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>  {

        private List<String> names = new ArrayList<String>();

        //构造函数
        public myAdapter (List<String> names) {
            this.names = names;
        }

        //view的布局类型
        @Override
        public int getItemViewType(int position) {
            return ;//return your type
        }


        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List<Object> payloads) {
            super.onBindViewHolder(holder, position, payloads);
        }

        //item数量
        @Override
        public int getItemCount() {
          return strings.size();
        }

        @Override
        public long getItemId(int position) { return position; }

        //生成布局和Viewholder
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(getContext()).inflate(R.layout.cell_recycleview, null);
            MyViewHolder myViewHolder = new MyViewHolder(view);
            return  myViewHolder;
        }

        //UI的更新,设置数据,点击监听等
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {

            String name = names.get(position);

            ((MyViewHolder) viewHolder).nameTextView.setText(name);
            ((MyViewHolder) viewHolder).rootView.
            ((MyViewHolder) viewHolder).rootView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                       //recrclerView 点击事件
                    }
                });

        }

        //自定义ViewHolder
        public class MyViewHolder extends RecyclerView.ViewHolder {

            public View rootView;
            public TextView nameTextView;


            public MyViewHolder (View view) {
                super(view);
                rootView = view;

                nameTextView = (TextView) view.findViewById(R.id.tv_name);
            }
        }
}
           

判断滚动到底部,需要为recyclerview添加滚动监听

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

        //第一个可见item的位置
        int firstVisibleItem =((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();

        //当前可见的item数
        int visibleItemCount = ((LinearLayoutManager)recyclerView.getLayoutManager()).getChildCount();

        //总共的item数
        int totalItemCount = ((LinearLayoutManager)recyclerView.getLayoutManager()).getItemCount();

        if (firstVisibleItem == ) {//滚动到顶部
            isTop = true;            
        }else {
            isTop = false;       
        }

        // 满足下列条件后即滚动到底部,如有需要可开始加载下一页
        if (firstVisibleItem + visibleItemCount > totalItemCount - ) {
            if (current_page>= && total_page>current_page) {//根据实际,再加一些加载更多的条件判断

                loadMoreData();//加载更多
            }
        }
    }
});