RecyclerView

RecyclerView

RecyclerView 的基本使用

RecyclerView和SwipeRefreshLayout搭配使用实现RecyclerView的下拉刷新和上拉加载


  • [X]未解决代码中的待修复的问题

项目中的bug待解决
当首页加载内容全部显示是刷新接口的调用会同时调用加载
布局文件中SwipRefreshLayout中嵌套可滑动的控件RecyclerView
思路
1.通过SwipRefreshLayout的下拉属性来刷新数据
2.通过RecyclerView的Adapter的多布局复用添加HeadView和FootView(加载提示为RecyclerView添加的布局 –加载更多….– ;–加载完毕–)
3.通过RecyclerView的addOnScrollListener()方法监听RecyclerView的滑动

1.布局文件的设置

<android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh_widget"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:cacheColorHint="@null"
            android:scrollbars="vertical" />
    </android.support.v4.widget.SwipeRefreshLayout>

2.SwipRefreshLayout的设置

//加载等待时的动画颜色设置  mSwipeRefreshWidget.setColorSchemeColors(Color.BLACK,Color.RED,Color.BLUE,Color.YELLOW);
//加载监听
 mSwipeRefreshWidget.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
//   刷新的网络加载           

            }
        });

3.RecyclerView的设置
3.1RecyclerView的滑动监听

        mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);

               if (newState == RecyclerView.SCROLL_STATE_IDLE
                        && lastVisibleItem + 1 == adapter.getItemCount()) {
              if (!isLoadMore) {
              // 此处在现实项目中,请换成网络请求数据代码,      
                    } else {
                        Log.d("whl", "正在加载中");
                    }
                }

            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                lastVisibleItem = manager.findLastVisibleItemPosition();
                 }
        });

3.2RecyclerViewd的Adapter的多布局复用显示加载时的加载布局
ps.

class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
        private final  int TYPE_FOOT=0;
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            RecyclerView.ViewHolder holder = null;
            TextView textView = new TextView(parent.getContext());
            if (viewType == TYPE_FOOT) {

                holder = new footHolder(textView);
            } else {
                holder = new Holder(textView);
            }

            return holder;
        }

        @Override
        public int getItemViewType(int position) {
            if (datas.get(position).equals("0")) {
                return TYPE_FOOT;
            }
            return 1;
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            if (holder instanceof Holder) {
                ((Holder) holder).textView.setText(datas.get(position));

            } else if (holder instanceof footHolder) {
                ((footHolder) holder).footView.setText("正在加载");

            }

        }

        @Override
        public int getItemCount() {
            return datas.size();
        }
    }

    class Holder extends RecyclerView.ViewHolder {
        TextView textView;

        public Holder(View itemView) {
            super(itemView);
            textView = (TextView) itemView;
        }
    }

    class footHolder extends RecyclerView.ViewHolder {
        TextView footView;

        public footHolder(View itemView) {
            super(itemView);
            footView = (TextView) itemView;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值