RecyclerView上拉刷新下拉加载
来源:互联网 发布:苏州岩倍美工是真是假 编辑:程序博客网 时间:2024/06/05 17:42
因为请求的数据是可以分页的,所以下拉加载时直接改变其中的一个数值,可能不是很规范。
mvp请求成功后,在MainActivity里写如下代码
在onCreate()里面
initView();initData();在initData()里面
presenter = new UserPresenter(this);presenter.initUser(1);---也可以是两个this,这个看presenter类里面的传递来的,不是随便改变的。
//寻找控件main_srl = (SwipeRefreshLayout) findViewById(R.id.main_srl);main_rv = (RecyclerView) findViewById(R.id.main_rv);manager = new LinearLayoutManager(MainActivity.this);main_rv.setLayoutManager(manager);main_rv.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if(newState == RecyclerView.SCROLL_STATE_IDLE){ int lastVisiblePosition = manager.findLastVisibleItemPosition(); if(lastVisiblePosition >= manager.getItemCount()-1){ page=page+1; presenter.initUser(page); System.out.println("page = " + page); Toast.makeText(MainActivity.this, "下拉加载", Toast.LENGTH_SHORT).show(); } } }});
在请求成功数据的方法里面写
//请求数据成功runOnUiThread(new Runnable() { @Override public void run() { System.out.println("data.toString() = " + data.toString());//最上面要声明下面这行代码//private List<Bean.DataBean> data1 = new ArrayList<>();
//全部添加进去 data1.addAll(data); if(adapter == null){ adapter = new MyAdapter(MainActivity.this,data1); main_rv.setAdapter(adapter); }else{ adapter.notifyDataSetChanged();//刷新 } adapter.setToastMsg(new MyAdapter.ToastMsg() { @Override public void toastMsg(View view, int pos) { adapter.notifyDataSetChanged(); Toast.makeText(MainActivity.this, data1.get(pos).getOccupation(), Toast.LENGTH_SHORT).show(); } }); main_srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { data.clear(); presenter.initUser(1); Toast.makeText(MainActivity.this, "下拉刷新", Toast.LENGTH_SHORT).show(); main_srl.setRefreshing(false); } }); }});
RecyclerView的适配器里面要自己添加一个接口,并暴露出来
private ToastMsg toastMsg;public void setToastMsg(ToastMsg toastMsg) { this.toastMsg = toastMsg;}public interface ToastMsg{ void toastMsg(View view,int pos);}
之后在onBindViewHolder里面写
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { toastMsg.toastMsg(view,position); return false; }});
之后就大功告成了,因为数据本身就是分页的,所有很容易就实现
阅读全文
0 0
- RecyclerView实现上拉加载,下拉刷新
- RecyclerView 下拉刷新上拉加载更多
- RecyclerView实现上拉加载,下拉刷新
- RecyclerView 下拉刷新上拉加载更多
- RecyclerView的上拉加载,下拉刷新
- RecyclerView 下拉刷新和上拉加载
- RecyclerView下拉刷新上拉加载
- RecyclerView下拉刷新上拉加载
- RecyclerView下拉刷新上拉加载
- RecyclerView 下拉刷新、上拉加载更多
- RecyclerView 下拉刷新上拉加载更多
- recyclerView上拉加载,下拉刷新
- RecyclerView上拉刷新,下拉加载更多
- Recyclerview上拉加载下拉刷新
- RecyclerView 下拉刷新上拉加载更多
- RecyclerView上拉刷新,下拉加载
- RecyclerView上拉刷新下拉加载
- RecyclerView 下拉刷新 上拉加载
- 文章标题
- TabLayout使用
- git用到的小实例
- Torch+DeepSpeech2的语音识别注意事项
- AI决策算法 之 GOAP (二)
- RecyclerView上拉刷新下拉加载
- Freemarker 学习笔记一Freemarker 的介绍以及创建步骤
- java性能优
- bcoderSS官网
- wireshark捕获/过滤指定ip地址数据包
- 4-1集合类(重点)
- ExpandableListView购物车实现(转载)
- java hashmap源代码了解
- SSH,SSR,SSL