//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); }Itembeanpublic 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) { } }); }适配器里的一个布局<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); } }