RecyclerView上拉刷新,下拉加載

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);
                }
            }
        });
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章