RecyclerView上拉刷新,下拉加载

来源:互联网 发布:淘宝拍视频用什么软件 编辑:程序博客网 时间:2024/06/04 19:25

Activity界面方法

protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);mRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.layout_swipe_refresh);    initView();//初始化资源id    initDataFromServer(1);  recycler.addOnScrollListener(new RecyclerView.OnScrollListener() {        @Override        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {      super.onScrollStateChanged(recyclerView, newState);             if (newState == RecyclerView.SCROLL_STATE_IDLE) {                    int lastVisiblePosition =linearLayoutManager.findLastVisibleItemPosition();               if (lastVisiblePosition >= linearLayoutManager.getItemCount() - 1) {                      count++;                                     initDataFromServer(count);              }       });    public void onRefresh() {           if(count<1){              initDataFromServer(count);             Toast.makeText(MainActivity.this,"已经是最新数据了!",Toast.LENGTH_SHORT).show();             } else{              initDataFromServer(count);               Toast.makeText(MainActivity.this,"数据刷新了!",Toast.LENGTH_SHORT).show();  }            //数据重新加载完成后,提示数据发生改变,并且设置现在不在刷新            adapter.notifyDataSetChanged();            mRefreshLayout.setRefreshing(false);      }   });}//调用网络工具类请求网络数据private void initDataFromServer(int index) {    HttpUtils http = new HttpUtils();    http.setCallBack(this);    //默认的page参数为1    http.NetWorkFromServer(index);}//初始化viewprivate void initView() {    //找到资源id    tv = (TextView) findViewById(R.id.ttt);    recycler = (RecyclerView) findViewById(R.id.recycler);    linearLayoutManager = new LinearLayoutManager(this);    //设置显示效果为线性    recycler.setLayoutManager(linearLayoutManager);}//通过接口回调返回数据@Overridepublic void callBack(final ResponseBean responseBean) {    runOnUiThread(new Runnable() {        @Override        public void run() {            //设置适配器           adapter = new MyRecyclerView(responseBean.data, MainActivity.this);            recycler.setAdapter(adapter);        }    });}

请求网络的工具类

public class HttpUtils {    //定义变量用于接收接口对象    private static CallBackResponse callbackResponse;    public void setCallBack(CallBackResponse callbackResponse) {        this.callbackResponse = callbackResponse;    }    public  void NetWorkFromServer(int page) {        String url = "http://www.yulin520.com/a2a/impressApi/news/mergeList?sign=C7548DE604BCB8A17592EFB9006F9265&pageSize=20&gender=2&ts=1871746850&page=" + page;        OkHttpClient ok = new OkHttpClient();//创建okhttp对象        //设置url        final Request request = new Request.Builder()                .url(url)                .build();        Call call = ok.newCall(request);//得到call对象        call.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                Log.e("TAG","失败了");            }            @Override            public void onResponse(Call call, Response response) throws IOException {              //response.body().string()方法只能使用一次,不然拿不到数据                         if (response.isSuccessful() && response.body() != null){                    Gson gson = new Gson();                    ResponseBean responseBean = gson.fromJson(response.body().string(), ResponseBean.class);                    callbackResponse.callBack(responseBean);                }            }        });    }}
原创粉丝点击