您的位置:首页 > 其它

RecyclerView上拉刷新,下拉加载

2017-10-15 18:49 435 查看
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);
}
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: