Recycleviewswipe加载刷新
来源:互联网 发布:pdb数据库 编辑:程序博客网 时间:2024/06/11 15:34
1.第一步当然是先写布局啦
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"><android.support.v4.widget.SwipeRefreshLayout android:id="@+id/srf_mains" android:layout_width="wrap_content" android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android:id="@+id/rv_ab" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/holo_blue_bright"/></android.support.v4.widget.SwipeRefreshLayout></LinearLayout>
其中SwipeRefireshLayout是谷歌原生的刷新控件,所以现在好多软件都采用这种效果来刷新数据,RecyclerView是
ListView和GridView的更新迭代产品,虽然代码相对复杂点,没有setonImtemOnclickListener,只能在itemview设置或者设置回调,但却相对灵活,也很强大,能实现横向,纵向,瀑布流等效果。
2.业务逻辑
public class Main2Activity extends AppCompatActivity { private List<String> list = new ArrayList<>(); MyViewAdapter myViewAdapter; SwipeRefreshLayout srf_mains; RecyclerView rv_ab; @TargetApi(Build.VERSION_CODES.M) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); //初始化视图 initView(); //业务逻辑 initData(); } private void initView() { srf_mains = (SwipeRefreshLayout) findViewById(R.id.srf_mains); rv_ab = (RecyclerView) findViewById(R.id.rv_ab); } private void initData() { //给集合创建假数据 for (int i=0;i<20;i++){ list.add("第"+i+"条数据"); } //设置recyclerview的样式,这里采用纵向线性样式 rv_ab.setLayoutManager(new LinearLayoutManager(this)); //创建适配器 myViewAdapter = new MyViewAdapter(); //设置设配器 rv_ab.setAdapter(myViewAdapter); //SwipeRefreshLayout设置刷新监听,这里模拟集合数据清空,重新添加 srf_mains.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { if (list.size()>0){ list.clear(); for (int i=0;i<20;i++){ list.add("第"+i+"条数据"); } } myViewAdapter.notifyDataSetChanged(); srf_mains.setRefreshing(false); ToastUtils.show(Main2Activity.this,"刷新成功"); } }); //recyclerview设置滚动监听,当到达最底部时分页加载数据,刷新适配器 rv_ab.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if(newState == RecyclerView.SCROLL_STATE_IDLE){ list.add(list.size()-1,"底部"); myViewAdapter.notifyDataSetChanged(); } } }); }3.最后粘上adapter的代码
private class MyViewAdapter extends RecyclerView.Adapter<MyViewAdapter.MyViewHolder> { @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType==0){ return new MyViewHolder(LayoutInflater.from(Main2Activity.this).inflate(R.layout.item_view, parent, false)); } return new MyViewHolder(LayoutInflater.from(Main2Activity.this).inflate(R.layout.item_views, parent, false)); } @Override public int getItemViewType(int position) { if (position==list.size()-1){ return 1; } return 0; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { if (position!=list.size()-1){ holder.tv_iteme.setText(list.get(position)); } } @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { TextView tv_iteme; public MyViewHolder(View itemView) { super(itemView); tv_iteme = (TextView) itemView.findViewById(R.id.tv_iteme); } }}监听加载数据总结:我采用的是分类型的adapter,一部分是数据显示部分,底部是加载更多显示,通过对recyclerview的滚动监听,当滑动到底部来加载更多,也就是分页显示,刷新部分采用的是官方的控件。recycle.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if(lm.findLastVisibleItemPosition()==song_list.size()-1) { Toast.makeText(getActivity(),"还没到底",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getActivity(),"到底了",Toast.LENGTH_SHORT).show(); getData(mpath); } }});
阅读全文
0 0
- Recycleviewswipe加载刷新
- 刷新加载
- 刷新加载
- 刷新加载
- 加载刷新
- 局部刷新加载js
- listview刷新、加载更多
- 刷新和加载
- 刷新,加载原理
- ListView下拉刷新加载
- PullToRefresh实现刷新加载
- 刷新和加载
- 用MJ 刷新加载
- 【Android】ListView刷新、加载
- 下拉刷新--加载更多
- PullToRefresh(刷新加载)
- iOS 异步加载刷新
- PullToRefresh刷新加载
- 作用域与闭包第一二三章
- 多文件上传MVC
- Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before
- 淘宝的购物
- 关于c语言中各符号的意义,以及优先级。
- Recycleviewswipe加载刷新
- git版本控制系统命令一
- L18 文本编辑工具Vim(二)
- post请求百度网址内容和访问本地springmvc工程controller
- 习题4
- linux,centos,rhel7 中SUID,SGID ,Sticky Bit权限作用是什么
- linux用户管理
- SpringBoot(非MAVEN教程)
- 智慧树自动播放工具