RecyclerView上拉刷新,下拉加载

来源:互联网 发布:党章党规面前知敬畏 编辑:程序博客网 时间:2024/05/23 01:18
compile 'com.android.support:recyclerview-v7:25.3.1'

activity_main.xml

<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="@+id/recyclerView"            android:layout_width="match_parent"            android:layout_height="match_parent">            </android.support.v7.widget.RecyclerView>    </android.support.v4.widget.SwipeRefreshLayout>

home_item.xml

   <ImageView        android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />
public class RecyleAdapter extends RecyclerView.Adapter {    private Context mcontext;    private List<FragBean.ResultBean.DataBean> list = new ArrayList<>();    private FragBean mHomePresenter;    public RecyleAdapter(Context context) {        this.mcontext = context;    }    public void setPresenter(FragBean presenter) {        this.mHomePresenter = presenter;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = View.inflate(mcontext, R.layout.home_item, null);        MyViewHolder myViewHolder = new MyViewHolder(view);        return myViewHolder;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        MyViewHolder myViewHolder = (MyViewHolder) holder;        myViewHolder.textView.setText(list.get(position).getTitle());        getiamgeforServer(myViewHolder.imageView, list.get(position).getThumbnail_pic_s());    }    @Override    public int getItemCount() {        return list.size();    }    public void setData(List<FragBean.ResultBean.DataBean> data) {        if (data != null) {            list.addAll(data);        }    }    public void getiamgeforServer(ImageView imageView, String url) {        x.image().bind(imageView, url);    }    class MyViewHolder extends RecyclerView.ViewHolder {        private final TextView textView;        private final ImageView imageView;        public MyViewHolder(View itemView) {            super(itemView);            textView = (TextView) itemView.findViewById(R.id.textView);            imageView = (ImageView) itemView.findViewById(R.id.imageView);        }        private void initListener(View itemView) {            imageView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Toast.makeText(mcontext, "poistion " + getAdapterPosition(), Toast.LENGTH_SHORT).show();                }            });        }    }    public void AddHeaderItem(List<FragBean.ResultBean.DataBean> list) {        this.list.addAll(0, list);        notifyDataSetChanged();    }    public void AddFootItem(List<FragBean.ResultBean.DataBean> list) {        this.list.addAll(list);        notifyDataSetChanged();    }}
   private RecyclerView recyclerView;    private HashMap<String, String> hashMap = new HashMap<>();    private String url = "http://result.eolinker.com/k2BaduF2a6caa275f395919a66ab1dfe4b584cc60685573?uri=gj";    private FragBean fragBean;    private RecyleAdapter adapter;    private GridLayoutManager gridLayoutManager;    private SwipeRefreshLayout mSwipeRefreshWidget;    @RequiresApi(api = Build.VERSION_CODES.M)    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);        mSwipeRefreshWidget = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_widget);        recyclerView.addItemDecoration(new MyRecyclerView(MainActivity.this));        mSwipeRefreshWidget.setColorSchemeColors(Color.BLUE, Color.BLACK,                Color.RED, Color.YELLOW);        // 这句话是为了,第一次进入页面的时候显示加载进度条//        mSwipeRefreshWidget.setProgressViewOffset(false, 0, (int) TypedValue//                .applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources()//                        .getDisplayMetrics()));//        mSwipeRefreshWidget.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {//            @Override//            public void onRefresh() {////            }//        });        initHttp();        initHttpT();    }    private void initHttpT() {        //创建适配器        adapter = new RecyleAdapter(this);        gridLayoutManager = new GridLayoutManager(this, 3);        int a = 3;        StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(a, StaggeredGridLayoutManager.VERTICAL);        recyclerView.setLayoutManager(gridLayoutManager);    }    private void initHttp() {        RequestParams params = new RequestParams();        params.setUri(url);        if (hashMap != null) {            Iterator<String> iterator = hashMap.keySet().iterator();            while (iterator.hasNext()) {                String key = iterator.next();                String value = hashMap.get(key);                params.addQueryStringParameter(key, value);            }        }        x.http().get(params, new Callback.CommonCallback<String>() {            @Override            public void onSuccess(String result) {                System.out.println("123123" + result);                Gson gson = new Gson();                fragBean = gson.fromJson(result, FragBean.class);                adapter.setPresenter(fragBean);                adapter.setData(fragBean.getResult().getData());                recyclerView.setAdapter(adapter);                initPullRefresh();                initLoadMoreListener();            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {            }            @Override            public void onCancelled(CancelledException cex) {            }            @Override            public void onFinished() {            }        });    }    private void initPullRefresh() {        mSwipeRefreshWidget.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                new Handler().postDelayed(new Runnable() {                    @Override                    public void run() {//                        List<String> headDatas = new ArrayList<String>();//                        for (int i = 20; i <30 ; i++) {////                            headDatas.add("Heard Item "+i);//                        }                        List<FragBean.ResultBean.DataBean> data = fragBean.getResult().getData();                        adapter.AddHeaderItem(data);                        //刷新完成                        mSwipeRefreshWidget.setRefreshing(false);                        Toast.makeText(MainActivity.this, "更新了 " + data.size() + " 条目数据", Toast.LENGTH_SHORT).show();                    }                }, 3000);            }        });    }    private void initLoadMoreListener() {        recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {            int lastVisibleItem;            @Override            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {                super.onScrollStateChanged(recyclerView, newState);                if (newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItem + 1 == adapter.getItemCount()) {                    new Handler().postDelayed(new Runnable() {                        @Override                        public void run() {//                        List<String> headDatas = new ArrayList<String>();//                        for (int i = 20; i <30 ; i++) {////                            headDatas.add("Heard Item "+i);//                        }                            List<FragBean.ResultBean.DataBean> data = fragBean.getResult().getData();                            adapter.AddFootItem(data);                            Toast.makeText(MainActivity.this, "更新了 " + data.size() + " 条目数据", Toast.LENGTH_SHORT).show();                        }                    }, 3000);                }            }            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                GridLayoutManager layoutManager = (GridLayoutManager) recyclerView.getLayoutManager();                //最后一个可见的ITEM                lastVisibleItem = layoutManager.findLastVisibleItemPosition();            }        });    }
原创粉丝点击