RecyclerView上拉刷新,下拉加载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Te_small/article/details/78242646

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);
}
//初始化view
private void initView() {
    //找到资源id
    tv = (TextView) findViewById(R.id.ttt);
    recycler = (RecyclerView) findViewById(R.id.recycler);
    linearLayoutManager = new LinearLayoutManager(this);
    //设置显示效果为线性
    recycler.setLayoutManager(linearLayoutManager);
}
//通过接口回调返回数据
@Override
public 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);
                }
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/Te_small/article/details/78242646