简单实现WaveSwipeRefreshLayout+RecyclerView的上拉加载下拉刷新的功能
来源:互联网 发布:淘宝人气宝收藏有用吗 编辑:程序博客网 时间:2024/06/05 14:49
//在使用WaveSwipeRefreshLayout之前得添加依赖
repositories { maven { url "https://jitpack.io" }}
compile 'com.github.recruit-lifestyle:WaveSwipeRefreshLayout:1.6'
//RecyclerView依赖
compile 'com.android.support:recyclerview-v7:26.+'
//这个RecyclerView依赖也是根据你自己的版本来更改的//自己的main布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" tools:context="zhoukao.demo01.com.shuaxin.MainActivity"> <jp.co.recruit_lifestyle.android.widget.WaveSwipeRefreshLayout android:id="@+id/wave" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView> </jp.co.recruit_lifestyle.android.widget.WaveSwipeRefreshLayout></LinearLayout>
//接下来开始实现吧
import android.graphics.Color;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import java.io.IOException;import java.util.List;import jp.co.recruit_lifestyle.android.widget.WaveSwipeRefreshLayout;import okhttp3.Call;import zhoukao.demo01.com.shuaxin.utils.GsonObjectCallback;import zhoukao.demo01.com.shuaxin.utils.OkHttp3Utils;public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private WaveSwipeRefreshLayout mWaveSwipeRefreshLayout; private Handler handler = new Handler(); private StaggeredGridLayoutManager staggeredGridLayoutManager; private LinearLayoutManager layoutManager; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 recyclerView = (RecyclerView) findViewById(R.id.recycler); getData();// staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); //布局管理器 layoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); mWaveSwipeRefreshLayout = (WaveSwipeRefreshLayout) findViewById(R.id.wave); //设置中间小圆从白色到黑色 mWaveSwipeRefreshLayout.setColorSchemeColors(Color.WHITE, Color.BLACK); //设置整体的颜色 mWaveSwipeRefreshLayout.setWaveColor(Color.argb(255, 255, 0, 0)); //下拉刷新 mWaveSwipeRefreshLayout.setOnRefreshListener(new WaveSwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { OkHttp3Utils.doGet("http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1", new GsonObjectCallback<DataBean>() { @Override public void onUi(DataBean dataBean) { List<DataBean.ResultsBean> list = dataBean.getResults(); myAdapter.refreshMore(list); } @Override public void onFailed(Call call, IOException e) { } }); //三秒后停止刷新 mWaveSwipeRefreshLayout.setRefreshing(false); } },3000); } }); //上拉加载 recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener(){ private int lastPosition; @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if(lastPosition+1==myAdapter.getItemCount()&&newState==RecyclerView.SCROLL_STATE_IDLE){ OkHttp3Utils.doGet("http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1", new GsonObjectCallback<DataBean>() { @Override public void onUi(DataBean dataBean) { List<DataBean.ResultsBean> list = dataBean.getResults(); myAdapter.loadMore(list); } @Override public void onFailed(Call call, IOException e) { } }); } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); lastPosition = layoutManager.findLastVisibleItemPosition(); } }); } private void getData(){ OkHttp3Utils.doGet("http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1", new GsonObjectCallback<DataBean>() { @Override public void onUi(DataBean dataBean) { List<DataBean.ResultsBean> list = dataBean.getResults(); if(myAdapter==null){ myAdapter = new MyAdapter(MainActivity.this,list); recyclerView.setAdapter(myAdapter); }else { myAdapter.notifyDataSetChanged(); } } @Override public void onFailed(Call call, IOException e) { } }); }}//所用到的Adapter
import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.squareup.picasso.Picasso;import java.util.List;public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{ private Context context; private List<DataBean.ResultsBean> list; public MyAdapter(Context context, List<DataBean.ResultsBean> list) { this.context = context; this.list = list; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.item, null); MyViewHolder myViewHolder = new MyViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { ViewGroup.LayoutParams params = holder.iv_recy.getLayoutParams(); if(position == 0){ params.height = 200; }else{ params.height = 400; } holder.iv_recy.setLayoutParams(params); Picasso.with(holder.iv_recy.getContext()).load(list.get(position).getUrl()).into(holder.iv_recy); holder.tv_recy.setText(list.get(position).getType()); } @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ ImageView iv_recy; TextView tv_recy; public MyViewHolder(View itemView) { super(itemView); iv_recy = (ImageView) itemView.findViewById(R.id.iv_recy); tv_recy = (TextView) itemView.findViewById(R.id.tv_recy); } } public void loadMore(List<DataBean.ResultsBean> li){ for (DataBean.ResultsBean str : li){ list.add(str); } //更新界面 notifyDataSetChanged(); } public void refreshMore(List<DataBean.ResultsBean> li){ for (DataBean.ResultsBean str : li){ list.add(0,str); } //更新界面 notifyDataSetChanged(); }}
//其中item的布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <ImageView android:id="@+id/iv_recy" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_recy" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
//其中用到的接口 可以直接在网上去获取在这里就不给演示了
//其中用到了OKHttp3的一个方法,这个需要自己去封装 你可以使用HttpURLconntion去实现网络请求
在这里不给一一实现了
阅读全文
0 0
- 简单实现WaveSwipeRefreshLayout+RecyclerView的上拉加载下拉刷新的功能
- 简单的实现WaveSwipeRefreshLayout的下拉刷新(嵌套RecyclerView)
- RecyclerView的简单使用,实现下拉刷新、上拉加载
- RecyclerView 最简单的 下拉刷新 上拉加载
- RecyclerView的上拉加载,下拉刷新
- Android 实现RecyclerView的下拉刷新和上拉加载
- RecyclerView 上拉加载更多下拉刷新的一种实现
- 新WaveSwipeRefreshLayout+RecyclerView上拉加载下拉刷新+多条目布局
- RecyclerView+SwipeRefreshLayout实现上拉刷新,下拉加载更多的功能
- 【Android实战】----RecyclerView下拉刷新和上拉加载的简单实现
- 封装RecyclerView,实现下拉刷新,上拉加载功能
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉加载功能
- android 简单实现 RecyclerView 下拉刷新上拉加载
- 下拉刷新、上拉加载更多功能的实现
- tableview的下拉刷新和上拉加载功能实现
- RecyclerView实现上拉加载,下拉刷新
- RecyclerView实现上拉加载,下拉刷新
- 带有上拉加载下拉刷新和可滑动删除功能的ListView的简单实现
- 我的Linux学习之路(六、安装Redis)
- html之Bootstrap导航条去除圆角
- UVA127—加油学习努力向前
- 视图
- AMD-SDK的学习[4]--BinomialOption
- 简单实现WaveSwipeRefreshLayout+RecyclerView的上拉加载下拉刷新的功能
- Docker学习六:数据管理
- Mybatis学习笔记--(二)动态SQL
- 【Java面试题】之Object类中方法详解
- 开机画面的渐变页面效果
- Index column size too large. The maximum column size is 767 bytes
- Eclipse中使用SVN
- 《程序设计入门—Java语言.翁恺》第七周编程作业(1)-分解质因数
- 清空input[type='file']的文本域