RecyclerView的上拉加载下拉刷新和viewpager自动有点无限轮播
2017-10-25 20:02
501 查看
//////////////////////////main.xml////////////////////////////////
<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:layout_height="match_parent" android:orientation="vertical" tools:context="wangziying.baway.com.wangyue.MainActivity"> <com.youth.banner.Banner xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="220dp" /> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swlt" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="vertical" > <android.support.v7.widget.RecyclerView android:id="@+id/rlv" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </android.support.v4.widget.SwipeRefreshLayout> </LinearLayout>
先走网络框架
/////////Okhttputils///////////
public class OkhttpUtils { private static OkhttpUtils okHttpUtils; private final OkHttpClient httpClient; private final Handler handler; //构造方法私有化 private OkhttpUtils() { HttpLoggingInterceptor LoggingInterceptor = new HttpLoggingInterceptor(); LoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC); httpClient = new OkHttpClient.Builder() .addInterceptor(LoggingInterceptor) .build(); handler = new Handler(Looper.getMainLooper()); } public static OkhttpUtils getInstance() { if (okHttpUtils == null) { synchronized (OkhttpUtils.class) { if (okHttpUtils == null) { okHttpUtils = new OkhttpUtils(); } } } return okHttpUtils; } public void doGet(String url, final Class clazz, final OnNetListener onNetListener) { Request request = new Request.Builder() .url(url) .build(); httpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, final Response response) throws IOException { String string = response.body().string(); final ItemBean itemBean= (ItemBean) new Gson().fromJson(string, clazz); handler.post(new Runnable() { @Override public void run() { try { onNetListener.onSuccess(itemBean); } catch (IOException e) { e.printStackTrace(); } } }); } }); } }
////////////////OnNetListener/////////////////
public interface OnNetListener { public void onSuccess(ItemBean baseBean) throws IOException; public void onError(IOException e); }
////////////////////Itembean////////////////////
public class ItemBean { private int code; public int getCode() { return code; } public void setCode(int code) { this.code = code; } }
////////////////UserBean//////////////////////
自己在网上获取到进行解析
///////////////////MainActivity/////////////////////
public class MainActivity extends AppCompatActivity { private RecyclerView rlv; private SwipeRefreshLayout swlt; private Adapter adapter; private Banner mBanner; private RecyclerView mRlv; private SwipeRefreshLayout mSwlt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBanner = (Banner) findViewById(R.id.banner); //viewpager无限轮播 mBanner.setImageLoader(new GlideImageLoader()); ArrayList<String> list = new ArrayList<>(); list.add("http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=dce088c1a3ec8a1300175fa39f6afbfa/622762d0f703918f2b2091e45b3d269759eec42f.jpg"); list.add("http://img1.imgtn.bdimg.com/it/u=1727466040,2801574451&fm=27&gp=0.jpg"); list.add("http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=407b2e95de3f8794c7f2406dba726481/a5c27d1ed21b0ef4c9eb5573d7c451da81cb3e98.jpg"); mBanner.setImages(list); mBanner.start(); mBanner.setDelayTime(3000); //默认显示 inint(true); // 初始化组件 rlv = (RecyclerView) findViewById(R.id.rlv); swlt = (SwipeRefreshLayout) findViewById(R.id.swlt); // 设置布局管理器 rlv.setLayoutManager(new LinearLayoutManager(this)); // 网络请求数据 //下拉刷新 swlt.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { inint(true); } }, 2000); } }); //上拉加载 rlv.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); LinearLayoutManager layoutManager = (LinearLayoutManager) rlv.getLayoutManager(); int itemCount = layoutManager.getItemCount(); int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition(); if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { if (lastVisibleItemPosition == itemCount - 1) { inint(false); } } } }); } private void inint(final boolean isRefresh) { OkhttpUtils.getInstance().doGet("http://169.254.52.218/mobile/index.php?act=goods&op=goods_list&page=100", Userbean.class, new OnNetListener() { @Override public void onSuccess(ItemBean baseBean) throws IOException { Userbean user = (Userbean) baseBean; List<Userbean.DatasBean.GoodsListBean> goods_list = user.getDatas().getGoods_list(); adapter = new Adapter(MainActivity.this, goods_list); rlv.setAdapter(adapter); //判断刷新 if (isRefresh) { adapter.refresh(goods_list); swlt.setRefreshing(false); } else { adapter.loadMore(goods_list); } } @Override public void onError(IOException e) { } }); b756 }
////////////////////适配器里的一个布局////////////////////
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp" /> </LinearLayout>
//////////////////适配器///////////////////////////
public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<Userbean.DatasBean.GoodsListBean> list=new ArrayList<>(); public Adapter(Context context, List<Userbean.DatasBean.GoodsListBean> list) { this.context = context; this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.layout, null); return new Myholder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { Myholder hol= (Myholder) holder; String url = list.get(position).getGoods_image_url(); ImageLoader.getInstance().displayImage(url,hol.img); hol.tv.setText(list.get(position).getGoods_name()); } @Override public int getItemCount() { return list.size(); } class Myholder extends RecyclerView.ViewHolder{ private ImageView img; private TextView tv; public Myholder(View itemView) { super(itemView); img= (ImageView)itemView.findViewById(R.id.img); tv = (TextView)itemView.findViewById(R.id.tv); /*点击跳转界面,可以根据条件来确定做不做*/ tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(context, GoodActivity.class); context.startActivity(intent); } }); } } //在适配器里面设置刷新和加载 public void refresh(List<Userbean.DatasBean.GoodsListBean> list){ this.list.clear(); this.list.addAll(list); notifyDataSetChanged(); } public void loadMore(List<Userbean.DatasBean.GoodsListBean> list){ this.list.addAll(list); notifyDataSetChanged(); } }
}
//////////////////////////图片加载/////
public class Myapp extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); } }
//////////////重新设置图片(viewpager)详细去banmer上了解///////////////////////////
public class GlideImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage((String) path,imageView); } }
相关文章推荐
- TabLayout+ViewPager无限轮播加小圆点,XRecyclerView下拉刷新,加载更多
- android viewPager网络加载图片无限自动轮播
- Android ViewPager无限自动轮播
- ViewPager无限自动轮播
- android的ViewPager实现加载网络图片并自动轮播
- 自定义通用viewpager(左右无限滑动,自动轮播)
- [置顶] 自动轮播并且能够无限轮播的ViewPager,可纵向滑动、可修改滑动速度
- (原创)自定义view(view的绘制过程)、无限轮播并触碰停止轮播的viewpage、水平和垂直滚动的TextView、仿QQ滑动删除、下拉刷新上拉加载view、毛玻璃效果、低版本水波纹、圆环头像图
- viewpager+Handler自动无限轮播
- ViewPager+Fragment(延时加载)+XListView(下拉刷新)+ViewPager(自动循环)嵌套
- ViewPager 无限轮播 自动轮播
- viewpager自动无限轮播(网络请求的图片)
- ViewPager的自动无限轮播
- ViewPager图片自动+手动左右无限轮播
- Xlistview下拉刷新、上拉加载更多ViewPage+Handler完成无限轮播上下拉刷新;webView显示一个网页
- Viewpager图片自动轮播,网络图片加载,图片自动刷新
- ViewPager无限自动轮播+动画
- 基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView
- ViewPager无限轮播,加载网络数据,ImageLoader加载图片并缓存到SD卡上
- 轮播图Viewpager支持手动滑动定时滑动和自动加载图片页数