1. 程式人生 > >RecyclerView上拉重新整理,下拉載入

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);
                }
            }
        });
    }
}